垃圾回收算法
分代收集算法
将堆分为新生代和老年代, 分别使用不同的垃圾回收算法
新生代一般使用复制算法
老年代一般使用标记-清除 或 标记-整理算法
充分利用对象的生命周期长短不一的特点
并行垃圾回收算法
使用多个线程同时进行垃圾回收, 提高回收效率
主要包括并行标记-清除和并行复制
主流垃圾收集器
年轻代的主流选择
几乎所有经典GC在年轻代都选择复制算法
因为年轻代的对象朝生夕死, 存活率极低, 复制算法只需要复制少量存活对象, 效率极高, 且无内存碎片
老年代的策略区别
Parallel和Serial采用标记整理, 目的是消除内存碎片, 适用于存活率高的老年代
CMS采用标记清除, 因为它可以并发快速清理, 锁定停顿时间, 但是会产生内存碎片
G1虽然将堆划分为Region区, 但是Region区之间的GC还是复制(或整理)行为, 最终目的是消除碎片, 其算法倾向于标记-整理
ZGC
现代的低延迟收集器
不严格区分新生代和老年代
基于Region技术, 核心算法通常属于标记-整理或者复制的变体
重点是并发整理, 实现毫秒级停顿