垃圾收集算法:
1.标记-清除算法
简介:最基础的算法,分为“标记”和“清除”两个阶段。标记需要回收对象,然后统一回收。
主要缺点·效率不足
·空间问题:清理后会产生大量不连续的内存碎片,后续分配大对象时不得不提前触发另一次垃圾收集动作
2.复制算法(新生代)
简介:将内存分为大小相等的两块,每次只使用其中一块。
优点:实现简单、运行高效 缺点:内存只有原来的一半
(IBM研究):将内存分为一块较大的Eden和两块较小的Survivor,比例为8:1:1 -- 在回收时,将Eden和Survivor中存活的对象一次性复制到另外一块Survivor空间上。
3.标记-整理算法(老年代-复制操作较多)
标记后,让存活的对象都向一端移动,然后直接清理掉端边界以外的内存
4.分代垃圾收集算法
一般把Java堆分为新生代和老年代,选取上述几种算法进行处理。
总结:商业虚拟机的分代垃圾收集算法主要就是复制算法和标记-整理的集合。
记录不明确的点:目前新生代和老生代的关系没讲到,怎么从新生代到老生代