JVM参数总结及调优

来源:互联网 发布:51单片机 编辑:程序博客网 时间:2024/06/04 17:48

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时进行内存回收的线程数 GCTime GC时间占总时间的比率,默认99,即允许1%的GC时间。仅在ParallelScavenge收集器时生效 MaxGcPauseMillis 设置GC的最大停顿时间。仅在ParallelScavenge收集器时生效 CMSInitiatingOccupancyFraction 设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用CMS收集器时生效 UseCMSCompactAtFullCollection 设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效 CMSFullGCsBeforeCompaction 设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。仅在使用CMS收集器时生效 Xmx2g JVM最大可用内存为2g Xms2g JVM初始内存2g,避免gc后JVM动态分配内存 Xmn1g JVM年轻代大小 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
原创粉丝点击