CMS垃圾回收器优化参数解释
CMS垃圾回收器优化参数,做如下记录。能找到的这些可能会起作⽤的参数,在此做⼀下记录。
-XX:+AggressiveOpts
启⽤这个参数,则每当 JDK 版本升级时,你的 JVM 都会使⽤最新加⼊的优化技术(如果有的话)
-XX:MaxDirectMemorySize=2G
堆外内存最⼤值
-Xmx4G
柯南配音还珠格格堆内存最⼤值
uqg
-Xms4G
百度语音翻译
堆内存初始值
-Xmn2G
新⽣代⼤⼩
-XX:+UConcMarkSweepGCwhen i fall in love
开启CMS回收器
anonymously-XX:CMSInitiatingOccupancyFraction=70 是指设定CMS在对内存占⽤率达到70%的时候开始GC(因为CMS会有浮动垃圾,所以⼀般都较早启动GC)
-XX:+UCMSInitiatingOccupancyOnly 只是⽤设定的回收阈值(上⾯指定的70%),如果不指定,JVM仅在第⼀次使⽤设定值,后续则⾃动调整.
-XX:+CMSIncrementalMode 该标志将开启CMS收集器的增量模式。增量模式经常暂停CMS过程,以便对应⽤程序线程作出完全的让步。因此,收集器将花更长的时间完成整个收集周期。
因此,只有通过测试后发现正常CMS周期对应⽤程序线程⼲扰太⼤时,才应该使⽤增量模式。由于现代服务器有⾜够的处理器来适应并发的垃圾收集,所以这种情况发⽣得很少。
-XX:+UCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
神探夏洛克第三季第二集CMSFullGCsBeforeCompaction 说的是,在上⼀次CMS并发GC执⾏过后,到底还要再执⾏多少次full GC才会做压缩。默认是0,也就是在默认配置下每次CMS GC顶不住了⽽要转⼊full GC的时候都会做压缩。
把CMSFullGCsBeforeCompaction配置为10,就会让上⾯说的第⼀个条件变成每隔10次真正的full GC才做⼀次压缩(⽽不是每10次CMS并发GC就做⼀次压缩,⽬前VM⾥没有这样的参数)。这会使full GC更少做压缩,也就更容易使CMS的old gen受碎⽚化问题的困扰。
本来这个参数就是⽤来配置降低full GC压缩的频率,以期减少某些full GC的暂停时间。CMS回退到full GC时⽤的算法是mark-sweep-compact,
但compaction是可选的,不做的话碎⽚化会严重些但这次full GC的暂停时间会短些;这是个取舍。
-XX:MaxTenuringThreshold=10 默认15,该参数主要是控制新⽣代需要经历多少次GC晋升到⽼年代中的最⼤阈值。
-XX:+CMSScavengeBeforeRemark
在CMS GC前启动⼀次ygc,⽬的在于减少old gen对ygc gen的引⽤,降低remark时的开销-----⼀般CMS的GC耗时 80%都在remark阶段
positively
虎父无犬子什么意思>jhg-XX:ParallelCMSThreads=6 定义并发CMS过程运⾏时的线程数flop
-XX:+CMSParallelInitialMarkEnabled 开启该阶段的并⾏标记,使⽤多个线程进⾏标记,减少暂停时间。
-XX:+CMSParallelRemarkEnabled 开启并⾏的Remark,加快remark的速度。
-XX:-UAdaptiveSizePolicy
“Stop The World” 总计:
CMS Initial Mark(xxx cs) + CMS Remark (xxxx cs)= xxxms