JVM垃圾收集器之六(CMS收集器)

CMS收集器目的是为了得到最短的回收停顿时间,通过减少STW(Stop The World)的时间增加吞吐量

  1. 运行过程分为四步
    1. 初始标记
    2. 并发标记
    3. 重新标记
    4. 并发清除
  2. 使用单线程进行初始标记,此步骤需要STW
  3. 使用多线程进行重新标记,此步骤需要STW
  4. 使用标记-清除算法
  5. 可以和Serial收集器以及ParNew收集器结合使用
  6. 开启方式-XX:+UseConcMarkSweepGC

该收集器的优点是并发收集,停顿时间短,但是缺点是占用更多的CPU资源,回收后会出现内存碎片,并不是每次都会进行压缩,会占用更多的空间,并且多次标记会造成浮动垃圾无法及时清除