JAVA面试-JVM篇 01-CMS垃圾收集器的工作流程是什么有什么优缺点

发布时间:2026/6/10 13:19:55

JAVA面试-JVM篇 01-CMS垃圾收集器的工作流程是什么有什么优缺点 CMS垃圾收集器工作流程与优缺点一、文章概述CMSConcurrent Mark Sweep是JDK1.5推出的并发低延迟老年代垃圾收集器核心目标是最小化GC全局停顿STW时间。它采用标记-清除算法将大部分耗时操作与用户线程并发执行仅保留必要的短暂停顿是互联网、电商等对响应时间敏感场景的里程碑式设计。二、CMS标准4步工作流程STW阶段已加粗**初始标记 STW**并发标记**重新标记 STW**并发清除阶段详细说明✅ 初始标记STW毫秒级仅标记GC Roots直接关联的对象停顿极短保证根集合一致性。并发标记含并发预清理子步骤与用户线程并行遍历老年代标记存活对象并发预清理提前标记并发阶段产生的新对象和引用变化大幅减少后续重新标记的停顿时间。✅ 重新标记STW最长停顿修正并发阶段剩余的引用变动是CMS唯一一次较长停顿通常控制在几十毫秒内。并发清除含并发重置子步骤与用户线程并行清理标记的垃圾对象并发重置清理收集器内部状态为下一次GC做准备。三、核心优缺点与解决方案优点缺点对应解决方案极低延迟仅两次短暂STW内存碎片标记-清除产生不连续空间-XX:UseCMSCompactAtFullCollectionFull GC时压缩高并发核心工作与用户线程并行浮动垃圾并发清除阶段产生的垃圾无法本次回收-XX:CMSInitiatingOccupancyFraction75提前触发GC响应快适合低延迟业务CPU敏感并发阶段占用CPU资源-XX:ConcGCThreadsN调整并发GC线程数总结CMS通过4步核心流程和预清理、重置等优化彻底解决了传统收集器长时间卡顿的问题。虽然存在内存碎片、浮动垃圾等固有缺陷且最终在JDK9被G1收集器取代但其并发设计思想和优化手段仍是现代垃圾收集器的核心基础。

相关新闻