CMS(Concurrent Mark Sweep) 收集器是一种以获取最短回收停顿时间为目标的收集器。
1、CMS使用的算法
CMS使用的算法为“标记-清除”算法
2、运行过程4步骤
a、初始标记(CMS initial mark)
b、并发标记(CMS concurrent mark)
c、重新标记(CMS remark)
d、并发清楚 (CMS concurrent sweep)
其中初始标记、重新标记都需要“Stop The Word”。初始标记仅仅只是标记一下GC Roots 能直接关联的对象,速度快;并发标记阶段是进行GC Roots Tracing 的过程;重新标记则是为了修正并发标记期间因用户程序继续运行而导致标记产生变动的第一部分对象的标记记录,这个阶段的停顿时间一般比初始标记的时间长一些,单远比并发标记短。
3、从整体行来说CMS收集器的内存回收过程是与用户线程一起并发执行的,执行过程如下图