1 简介
CMS(Concurrent Mark Sweep)收集器将低GC停顿作为目标的并发收集器,采用“标记-清除”算法,尽可能降低GC的停顿时间,关注应用的响应速度,所以它在Web应用服务中被大量使用。
2 运行机制
CMS进行GC的两个阶段
(1)标记阶段
- 初始标记(STW):标记GC Roots能直接关联到的对象,速度较快
- 并发标记:从初始标记过程标记到的对象遍历对象图,该过程与用户进程并发执行
- 重新标记(STW):增量地对并发标记过程产生变动的对象进行标记,稍长于初始标记
(2)清除阶段
- 并发清除:仅清理标记阶段判断的已死亡的对象,不移动存活对象,与用户线程并发执行
对于CMS GC的过程来说,在初始标记和重新标记有停顿,其余过程都与用户进程并发执行。
3 缺点
3.1 对CPU资源敏感
由于GC线程是CPU密集型线程,且它与用户线程在“并发标记”与“并发清除”阶段是并发执行的,所以GC线程会与用户线程竞争