1:是什么
CMS (Concurrent Mark Sweep)收集器是-种以获取最短回收停顿时间为⽬标的收集器。 ⽬前很⼤⼀部分的Java应⽤集中在互联⽹站或者B/S系统的服务端上,这类应⽤尤其重 视服务 的响应速度,希望系统停顿时间最短,以给⽤户带来较好的体验。CMS 收集器是基于“标记-清除”算法实现的,用户线程和垃圾线程同时执行。用户几乎感受用不到线程的暂停。也就是并发。
2:步骤流程
初始标记(CMS initial mark) -----标记⼀下 GC Roots 能直接关联到的对象,速度很快
并发标记(CMS concurrent mark --------并发标记阶段就是进⾏ GC RootsTracing 的过程
重新标记(CMS remark) -----------为了修正并发标记期间因⽤户程序导致标记产⽣变动的标记记录
并发清除(CMS concurrent sweep)
3:CMS垃圾收集器缺点
对CPU资源⾮常敏感
⽆法处理浮动垃圾,程序在进⾏并发清除阶段⽤户线程所产⽣的新垃圾
标记清除算法存在空间碎⽚