cms (concurrent mark sweep) 基于标记-清除 算法实现的。获取最短停顿时间的收集器算法
一。主要步骤:并发
1. 初始化标记 ( inittial mark) :须要stop world线程
仅标记gc root(系统类加载器,线程栈对象,本地栈对象等) 能够直接关联到的对象,因为只会标记第一层,因此很快对象
2.并发标记 (concureny mark): 耗时最长内存
与应用线程同时执行,不须要 stop world,根据1的结果,标记所有对象rem
3.从新标记(remark):须要stop worldit
标记 并发标记过程当中因为用户运行而产生变化的对象,耗时较短gc
4.并发清除cpu
二。缺点cms
1. cpu敏感
2. 没法处理浮动垃圾(cms运行阶段内存没法知足用户线程的须要:1 老年代申请内存过快,2.新生代过来的对象过多,),致使full gc,则使用SerialOld作后备收集器
3.基于 标记-清除算法实现,会产生过多的垃圾碎片,解决方案:fullGC 进行碎片压缩