- concurrent mark sweep,1.4后期引入, JDK11取消
- 特点
- 适用20G
- 多线程并行回收, 并发回收(GC与程序同时运行),降低STW时间(200ms)
- 不足 # 问题多,没有版本默认CMS
- 浮动垃圾
- 碎片多,新对象分配不下时,使用SerialOld
- 清理过程
- 初始标记(initial mark)
- [预标记] # Card Marking, 把Card标为Dirty
- 并发标记(concurrent mark)
- 重新标记(remark) # 处理并发标记过程中的变化
- 并发清理(concurrent sweep) # 过程中产生的浮动垃圾, 下次回收
- [整理阶段]
- 日志
- [GC(Allocation Failure)[ParNew:6144K→640K(6144K)], 0.02 secs] 6585K→2770K(19840K),0.02 secs][Times:user=0.02 sys=0.00, real=0.02 secs]
- 6144K→640K(6144K)
- 6585K→2770K(19840K)
- [GC (CMS Initial Mark)]
- [CMS-concurrent-mark-start]
- [CMS-concurrent-preclean-start]
- [GC (CMS Final Remark)]
- [YG occupancy]
- [Rescan(parallel)]
- [weak refs processing]
- [class unloading]
- [scrub symbol table]
- [scrub string table]
- [1 CMS-remark]
- [CMS-concurrent-sweep-start]
- [CMS-concurrent-reset-start]