内存管理机制与垃圾回收机制

内存管理机制

栈(Stack)是一种后进先出(FILO)的数据结构 一些变量和形参都存在栈中 栈中存一些简单的值类型数据 在运行时栈是可以随时更新的 当变量超出自身的作用于时 自动从栈中弹出 栈的元素是连续的 不会产生一些碎片垃圾 所以栈是不需要GC机制来回收栈中的数据的

堆(Heap)堆没有栈的特性 没有后进先出的顺序 堆像是个大容器 存储相对复杂的数据类型(比如引用类型)以及解决栈中出现栈溢出的问题  堆内存中存放数据是无序的 可理解为随机存放 数据之间连续不起来 所以堆中容易出现碎片垃圾 这时可以对数据加Dirty脏标记  方便记录数据 需要对数据进行排序 排序后即可清除多余的碎片垃圾

静态区 静态区主要存放程序中所有的全局变量和静态变量 程序运行后 静态区的内存要等到程序结束才释放

垃圾回收机制

GC(GarbageCollect)GC主要是回收堆上的数据资源 栈中的数据超出作用域会自动出栈不用堆来处理 垃圾回收时是判断gameObject是否还有有效的引用 如果gameobject为null那么GC认为他是垃圾 通过算法回收无效引用资源 当然也不是回收直接清除 是积累到一定量之后启动垃圾回收机主 GC回收实际上是调用了析构函数(~函数名())

你可能感兴趣的:(内存管理机制与垃圾回收机制)