java cms垃圾回收器总结

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 进行碎片压缩

相关文章
相关标签/搜索