CMS 回收器在一次 GC 过程中会有两次短暂的 STW,一次是 initial mark 阶段,一次是 remark 阶段。
附:CMS 的过程
- 初始标记(STW initial mark)
- 并发标记(Concurrent marking)
- 并发预清理(Concurrent precleaning)
- 重新标记(STW remark)
- 并发清理(Concurrent sweeping)
- 并发重置(Concurrent reset)
其中 initial mark 用来标记从 root 直接可达的和从 young genneration 中对象直接可达的对象;remark 用来标记在并发标记阶段遗漏的对象。remark 之前两个阶段:并发标记用于标记与 root 直接可达的对象下溯的对象;并发预清理用于减少 remark 的工作量,降低 STW 时间。