CMS收集器的工作原理与缺点
请详细说明CMS(Concurrent Mark Sweep)垃圾收集器的四个阶段以及存在的主要问题。
回答
小字辈
CMS四个阶段:
- 初始标记(Initial Mark):STW,标记GC Roots直接关联的对象,速度快。
- 并发标记(Concurrent Mark):从GC Roots Tracing,耗时最长,与应用并发。
- 重新标记(Remark):STW,修正并发标记期间变动的对象,使用增量更新。
- 并发清除(Concurrent Sweep):清除死亡对象,与应用并发。
主要缺点:
- CPU敏感:并发阶段占用CPU线程,总吞吐量下降。
- 浮动垃圾:并发清理期间产生的垃圾只能下次GC清理,可能引发Concurrent Mode Failure。
- 内存碎片:使用标记-清除算法,长时间运行产生大量碎片,导致Full GC提前或频繁。
- 无法处理老年代空间不足:预留空间不足时退化为Serial Old做Full GC。