单线程收集,暂停其他线程,简单高效,Client下默认老年代收集器(-XX:UseSerialOldGC,标记-整理算法)
多线程,吞吐量优先(-XX:UseParallelOldGC,标记-整理算法)
尽可能的减少了停顿时间,并发几乎能与用户线程同时工作,内存cpu硬性条件高有优势,需要短暂stop-the-world。注意算法会生产碎片(-XXUseConcMarkSweepGC,标记-清除算法)
它的使用率比较高.
1. 初始标记: stop-the-world(需要短暂的stop-the-world)
2. 并发标记:并发追溯标记, 程序不会停顿
3. 并发预清理: 查找执行并发标记记阶段从年轻代晋升到老年代的对象
4. 重新标记: 暂停虚拟机, 扫描CMS堆中的剩余对象(需要短暂的stop-the-world)
5.并发清理: 清理垃圾对象, 程序不会停顿
6. 并发重置: 重置CMS收集器的数据结构