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

概念

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

流程

参数

  • -XX:-CMSPrecleaningEnabled

不进行预清理多线程

  • -XX:+UseConcMarkSweepGC

启动 CMS 回收器,默认线程数(ParallelGCThreads + 3) /4并发

  • -XX:ConcGCThreads -XX:ParallelCMSThreads

设置并发线程数(并发是收集器和应用程序交替执行,并行是应用程序中止,多个线程一块儿执行 GC,并行回收器不是并发的是并行的)spa

  • -XX:CMSInitiatingOccupancyFraction

回收阈值,默认 68(老年代空间只用率达到 68%时,执行一次 CMS 回收,若是 CMS 回收失败,则虚拟机将启动老年代串行回收器,致使应用程序中断)
若是内存增加缓慢,则增大此值,减小老年代回收次数;若是内存增加过快,则下降此值,避免触发老年代串行回收器线程

  • -XX:+UseCMSCompactAtFullCollection

CMS 垃圾回收后进行一次碎片整理(单线程)对象

  • -XX:+CMSFullGCsBeforeCompaction

进行多少次 CMS 后,进行一次内存压缩内存

  • -XX:+CMSClassUnloadingEnabled

让 CMS 能够回收 Perm 区rem

相关文章
相关标签/搜索