Android GC原理
JVM GC算法
标记回收算法(Mark and Sweep)
从GC根节点开始,遍历一遍内存空间,保留可以被GC根节点直接或间接引用的对象,剩下的对象都可以被回收。遍历过程中, 需要中断进程内其他组件的执行,容易产生内存碎片。
复制(Copying)
将内存划分为两块,每次只使用其中的一块,GC时,把存活的对象拷贝到另一块内存中,然后回收当前内存块中的所有对象。
标记压缩(Mark-Compat)
从根节点开始,对所有可达对象做一次标记,GC时,把存活的对象压缩到内存的一边,然后清除边界之外的对象。
分代
新建的对象都放在年轻代的内存区,年轻代的对象都很容易被回收。一个对象经过几次GC之后仍然存活,就把它放入到老生代的内存区。年轻代采用复制算法,老生代采用标记压缩算法。
//todo to be completed