CMS
-XX:UseConcMarkSweepGC (B/S,微服务)
CMS收集器是一种以获取最短回收停顿时间为目标的收集器。基于“标记-清除”算法实现,它的运作过程如下:
-
初始标记(标记一下GC Roots能直接关联到的对象,素的很快)
-
并发标记 (进行GC Roots Tracing,扩展引用链,标记阶段的主要耗时)
-
重新标记 (修正并发标记期间因用户程序继续运作而导致标记产生变动(可能有些对象又不需要清除了)的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长点,但远比并发标记的时间短)
-
并发清除 (该阶段用户线程产生的垃圾无能为力,浮动垃圾)
初始标记、重新标记这两个步骤仍然需要“stop the world” , 并发标记和并发清除过程都可以和用户线程一起工作。
CMS是一款优秀的收集器,主要优点:并发收集、低停顿。
缺点:
- CMS收集器对CPU资源非常敏感。在并发阶段,它虽然不会导致用户线程停顿,但是一边标记清除,一边干活,导致cpu压力山大,使应用程序变慢,总吞吐量会降低。
- CMS收集器无法处理浮动垃圾,可能会出现“Concurrent Mode Failure(并发模式故障)”失败而导致Full GC产生。
<