三种GC回收算法原理对比
请详细说明标记-清除、标记-复制、标记-整理三种GC回收算法的原理、优缺点及适用场景。
回答
小字辈
1. 标记-清除(Mark-Sweep)
- 原理:标记存活对象,清除未标记对象。
- 优点:实现简单。
- 缺点:产生内存碎片;标记+清除效率随对象数增加下降。
2. 标记-复制(Mark-Copy)
- 原理:将内存分为两块,只使用一块,GC时将存活对象复制到另一块,清理原块。
- 优点:无内存碎片,分配高效(指针碰撞)。
- 缺点:可用内存缩小为一半;对象存活率高时代价大。
- 适用:新生代(对象存活率低,8:1:1 Eden:Survivor)。
3. 标记-整理(Mark-Compact)
- 原理:标记存活对象,向一端移动整理。
- 优点:无内存碎片,内存利用率高。
- 缺点:移动对象需要STW,效率低于复制算法。
- 适用:老年代(对象存活率高)。
现代GC通常分代组合使用:新生代用复制,老年代用标记-清除/整理。