JVM参数总结及调优

JVM参数总结

参数描述
UseSeialGC虚拟机运行在client模式下的默认值;使用Serial+SerialOld的收集器组合进行内存回收
UseParNewGC使用ParNew+SerialOld的收集器组合进行内存回收
UseConcMarkSweepGC使用ParNew+CMS+SerialOld的收集器组合进行内存回收,SerialOld收集器做为CMS收集器出现ConcurrentModeFailure失败后的后备收集器使用
UseParGC虚拟机做为server模式下的默认值;使用PararrelScavenge+SerialOld的收集器组合进行内存回收
UseParallelOldGC使用ParallelScavengl+ParallelOld的收集器组合进行内存回收
SurvivorRadio新生代中Eden区域和Survivor区域的容量比例,默认8,代表Eden:Survivor=8:1
PretenureSizeThreshold直接晋升到老年代的对象大小
MaxTenuringThreshold晋升到老年代的对象年龄
UseAdaptiveSizePolicy动态调整Java堆中各个区域的大小以及进入老年代的年龄
HandlePromotionFailure是否允许分配担保失败,即老年代的剩余空间不足应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况
ParallelGCThreads设置并行GC时进行内存回收的线程数
GCTimeGC时间占总时间的比率,默认99,即允许1%的GC时间。仅在ParallelScavenge收集器时生效
MaxGcPauseMillis设置GC的最大停顿时间。仅在ParallelScavenge收集器时生效
CMSInitiatingOccupancyFraction设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用CMS收集器时生效
UseCMSCompactAtFullCollection设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效
CMSFullGCsBeforeCompaction设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。仅在使用CMS收集器时生效
Xmx2gJVM最大可用内存为2g
Xms2gJVM初始内存2g,避免gc后JVM动态分配内存
Xmn1gJVM年轻代大小
Xss256k每个线程的堆栈大小
-XX:PermSize永久代初始值
-XX:MaxPermSize永久代最大值
-XX:+PrintGC输出形式: [GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs][GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
-XX:+PrintGCTimeStamps可与-XX:+PrintGC -XX:+PrintGCDetails混合使用 输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
XX:+PrintGCApplicationStoppedTime输出形式:Total time for which application threads were stopped: 0.0468229 seconds
-Xloggc:filename把相关日志信息记录到文件以便分析
-XX:+PrintTLAB

JVM调优

  1. -Xmx3g -Xms3g -Xmn1g -Xss256k
    -Xmx3g -Xms3g,将JVM最大内存与初始内存设置相等,避免JVM垃圾回收后重新分配内存;-Xmn1g,年轻代Sun官方推荐配置为整个堆的3/8,通常设置为1/3或1/4;-Xss256k,减小每条线程的堆栈大小,能生成更多的线程。
  2. -XX:NewRatio=4
    调整年轻代与年老代比例(年轻代:年老代=1:4)
  3. -XX:MaxTenuringThreshold=0
    设置晋升到老年代的对象年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制。
  4. UseConcMarkSweepGC
    JVM在server模式下默认使用PararrelScavenge+SerialOld的收集器组合进行内存回收,不支持与用户线程并发执行。可使用ParNew+CMS+SerialOld的收集器组合进行内存回收(SerialOld收集器做为CMS收集器出现ConcurrentModeFailure失败后的后备收集器使用),减少stop-the-world时间。
  5. -XX:CMSFullGCsBeforeCompaction
    使用CMS时,设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值