CMS回收器执行流程
CMS(Concurrent Mark Sweep)目标:获取最短回收停顿时间为目标的收集器。算法:"标记-清除"算法实现
CMS是老年代垃圾收集器,在收集过程中可以与用户线程并发操作。它可以与 Serial 收集器 和 Parallel New收集器搭配使用。CMS牺牲了系统的吞吐量来追求收集速度,适合追求垃圾收集速度的服务器上。可以通过JVM启动参数,来开启CMS:
-XX:+UseConcMarkSweepGC
牺牲吞吐量,追求收集速度是什么意思
其实实际使用过程中发现,CMS是将每次收集的时间减少,但是垃圾还是那么多,于是回收的工作方式就变成了跟吃自助餐常听到的一样"勤拿少取",就是每次回收时间短,也并不完全回收全部的垃圾,通过多次回来处理。
1.初始标记(CMS initial mark)单线程,标记新生代可达老年代的对象。为了收集应用程序的对象引用需要暂停应用程序线程,该阶段完成后,应用程序线程再次启动。
2.并发标记(CMS-concurrent-mark)在第一个阶段(Initial Mark)被暂停的应用线程将恢复运行 ...