能详细说一下CMS收集器的垃圾收集过程吗?
CMS收集齐的垃圾收集分为四步:
- 初始标记(CMS initial mark):单线程运行,需要Stop The World,标记GC Roots能直达的对象。
- 并发标记((CMS concurrent mark):无停顿,和用户线程同时运行,从GC Roots直达对象开始遍历整个对象图。
- 重新标记(CMS remark):多线程运行,需要Stop The World,标记并发标记阶段产生对象。
- 并发清除(CMS concurrent sweep):无停顿,和用户线程同时运行,清理掉标记阶段标记的死亡的对象。
Concurrent Mark Sweep收集器运行示意图如下:
Concurrent Mark Sweep收集器运行示意图