JVM CMS 常用参数
所属分类 java
浏览量 1535
并发收集器 CMS(Concurrent Mark-Sweep)
-XX:+UseConcMarkSweepGC
激活CMS收集器 HotSpot JVM默认使用并行收集器
激活CMS 年轻代默认使用 ParNewGC
-XX:+CMSConcurrentMTEnabled
并发的CMS阶段将以多线程执行 默认开启
-XX:+CMSParallelRemarkEnabled
采用并行标记方式降低停顿
-XX:ConcGCThreads
设置并发收集线程数
如果没有设置 JVM根据ParallelGCThreads参数计算默认的并行CMS线程数
ConcGCThreads =(ParallelGCThreads + 3)/4
-XX:CMSInitiatingOccupancyFraction
value=75 表示 第一次CMS垃圾收集会在老年代占用75%时被触发
默认值为68
-XX:+UseCMSInitiatingOccupancyOnly
当该标志被开启时,JVM通过CMSInitiatingOccupancyFraction的值进行每一次CMS收集,而不仅仅是第一次。
大多数情况下,JVM能作出更好的垃圾收集决策,一般不要设置该值
-XX:+CMSClassUnloadingEnabled
相对于并行收集器,CMS收集器默认不会对永久代进行回收。
-XX:+CMSIncrementalMode
增量模式经常暂停CMS过程,以便对应用程序线程作出让步,将花更长的时间完成整个收集周期。
只有通过测试后发现正常CMS周期对应用程序线程干扰太大时,才使用增量模式
-XX:+ExplicitGCInvokesConcurrent和-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
ExplicitGCInvokesConcurrent JVM无论什么时候调用系统GC,都执行CMS GC,而不是Full GC。
ExplicitGCInvokesConcurrentAndUnloadsClasses 保证当有系统GC调用时,永久代也被包括进CMS垃圾回收的范围内
-XX:+DisableExplicitGC
或略 system.gc()
-XX:+UseCompressedOops
对对象数据进行压缩处理,提高内存利用率。
-XX:MaxGCPauseMillis=50
设置GC最大暂停时间,单位为毫秒。
防止堆碎片引起full gc,CMS阶段进行合并碎片,-XX:+UseCMSCompactAtFullCollection
-XX:+CMSParallelRemarkEnabled 减少remark时间
-XX:+CMSScavengeBeforeRemark 强制remark之前开始一次minor gc
避免Perm区满引起的full gc,建议开启CMS回收Perm区
-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
打开GC日志
-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/home/logs/gc.log
上一篇
下一篇
币圈吹牛逼套路汇总
如何判断一个数是否在40亿个整数中
延迟队列原理及使用场景
JVM CMS 介绍
各种垃圾收集器的特点及使用场景
顶尖学霸是如何炼成的