垃圾收集算法
2017-04-01 23:41:32 0 举报
AI智能生成
垃圾收集算法
作者其他创作
大纲/内容
标记-清除(Mark-Sweep)
原理:
1.先标记出需回收的对象
2.在标记完成后进行统一回收
优缺点
缺点:
1.标记和清除的2个过程效率都低
2.容易产生内存碎片,导致后续需要分配较大对象时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作
复制
原理:
将内存分为大小相等的2块,内存分配时只使用其中的一块。这一块用完了,再将还存活的对象复制到另外一块区域,然后将这块区域清除
优缺点:
缺点
每次只对半个区域进行内存回收,内存利用率只有之前的50%
优点
1.因为是将一整个半块清除,所以不用考虑内存碎片问题
2.分配内存时只需要移动指针,实现简单,运行高效
改进方案
分为8:1:1,其中1块较大的Eden区,2块小的survivor区域,每次使用Eden区和一块survivor区域。当回收时,将还存活的对象一次性得复制到另外一块survivor区域,然后再清除Eden区和survivor区域。如果survivor区域不够存放存活的对象,则通过分配担保机制进入老年代
标记-整理
和标记-清除算法相似,只是第二步不是清除,而是整理:让所有存活的对象向一端移动,然后直接清理掉边界以外的内存
分代收集
将内存分为好几块区域,根据不同区域不同对象的特点而采用不同的垃圾收集算法,如新生代每次收集时都有大量对象死去,适合用复制算法,只需要付出少量的存活对象的复制成本就可以完成收集。老年代中对象存活几率高,没有额外空间对它进行分配担保,适合用标记-清除或者是标记整理算法
0 条评论
下一页