
CMS(Concurrent Mark Sweep)垃圾回收器是一种专注于减少系统暂停时间的垃圾回收器,采用的是标记清除算法,共分为四个阶段:初始标记、并发标记、重新标记和并发清理,部分阶段与用户线程并发执行,提高了系统响应能力,作用于老年代

缺点:
1、存在内存碎片:由于CMS采用标记清除算法,在垃圾回收之后会产生大量的内存碎片。CMS虽然会在经历几次标记清除算法后进行碎片整理,但整理时会暂停用户线程。
2、存在浮动垃圾:CMS垃圾回收器在并发标记和并发清理阶段由于用户线程并未停止,该阶段可能会产生浮动垃圾,无法在本次被回收,只能等到下一次垃圾回收
3、退化问题:当老年代内存不足以分配对象时,CMS会退化为Serial Old单线程串行进行垃圾回收,导致性能下降
4、线程资源争抢:在并发标记和并发清理阶段,执行垃圾回收的线程数量由系统计算出,如果CPU核数有限,会影响用户线程的执行性能,导致程序变慢