一、CMS垃圾收集器概述
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,主要面向需要快速响应、低延迟的互联网应用场景。作为老年代收集器,CMS通常与ParNew收集器配合使用,形成"ParNew+CMS"的经典组合。
官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/cms.html#concurrent_mark_sweep_cms_collector
CMS采用"标记-清除"算法,整个过程分为4个主要阶段,其中两个阶段可以与用户线程并发执行,这使得它在减少停顿时间方面表现出色。
二、CMS回收流程详解
1. CMS回收的四个核心阶段
(1) 初始标记(CMS initial mark)标记GC Roots直接关联对象,无需Tracing,速度很快
(2) 并发标记(CMS concurrent mark)进行GC Roots Tracing
(3) 重新标记(CMS remark)修正并发标记期间因用户程序变动导致的标记变化
(4) 并发清除(CMS concurrent sweep) 清除不可达对象回收空间,期间产生的新垃圾称为浮动垃圾
订阅专栏 解锁全文
201

被折叠的 条评论
为什么被折叠?



