转载

【深入浅出-JVM】(34):CMS 回收器

Concurrent Mark Sweep 并发标记清除(多线程并且用的标记清除算法),会造成大量的内存碎片,离散的可用空间无法分配较大的对象

流程

【深入浅出-JVM】(34):CMS 回收器

参数

  • -XX:-CMSPrecleaningEnabled
    不进行预清理
  • -XX:+UseConcMarkSweepGC
    启动 CMS 回收器,默认线程数(ParallelGCThreads + 3) /4
  • -XX:ConcGCThreads -XX:ParallelCMSThreads
    设置并发线程数(并发是收集器和应用程序交替执行,并行是应用程序停止,多个线程一起执行 GC,并行回收器不是并发的是并行的)
  • -XX:CMSInitiatingOccupancyFraction
    回收阈值,默认 68(老年代空间只用率达到 68%时,执行一次 CMS 回收,如果 CMS 回收失败,则虚拟机将启动老年代串行回收器,导致应用程序中断)
    如果内存增长缓慢,则增大此值,减少老年代回收次数;如果内存增长过快,则降低此值,避免触发老年代串行回收器
  • -XX:+UseCMSCompactAtFullCollection
    CMS 垃圾回收后进行一次碎片整理(单线程)
  • -XX:+CMSFullGCsBeforeCompaction
    进行多少次 CMS 后,进行一次内存压缩
原文  http://mousycoder.com/thinking-in-jvm/34/
正文到此结束
Loading...