个人博客
CMS Full GC流程以及调优配置 | iwts’s blog
CMS
CMS 收集器是以实现最短 STW 时间为目标的收集器,所以对于偏业务的后台开发而言,基本上都无脑选CMS了。
多线程收集器,工作在老年代,采用标记清除算法。比较特殊,其他两个老年代收集器都是标记整理。
标记清除算法流程
-
初始标记(STW)。
a. 仅标记 GC Roots 能关联的对象,速度很快。
-
并发标记。
a. GC Roots Tracing。
b. 此时用户线程是在工作的。
-
重新标记(STW)。
a. 修正并发标记期间因用户线程继续运行而导致标记产生变动的那一部分对象的标记记录。
b. STW时间稍长。
-
并发清除。
a. 此时用户线程在工作。
总体上看,可以认为 CMS 收集器的内存回收过程是与用户线程一起并发执行的。
在老年代达到80%时进行Full GC,默认6次Minor GC晋升到老年代。