目标:获取最短回收停顿时间
步骤:
-
初始标记:标记一下GC Roots能直接关联到的对象
-
并发标记:从GC Roots的直接关联对象开始遍历整个对象图的过程,过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行
-
重新标记:为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录。停顿时间通常会比初始标记阶段稍长一些,但也远比并发标记阶段的时间短
-
并发清除:清理删除掉标记阶段判断的已经死亡的对象,由于不需要移动存活对象,所以这个阶段也是可以与用户线程同时并发的
优点:并发收集、低停顿
缺点:CMS收集器对处理器资源非常敏感、CMS收集器无发处理“浮动垃圾”、CMS基于标记-清除算法实现,收集结束时产生大量空间碎片