JVM参数和jvm.log

参数说明:

-Xms    初始堆大小
-Xmx    最大堆大小
-Xmn    年轻代大小 eden + 2 survivor space
-XX:SurvivorRatio=8     Eden区与Survivor区的大小比值
-XX:PermSize    设置持久代(perm gen)初始值
-XX:MaxPermSize    设置持久代最大值
-Xss    每个线程的堆栈大小
-XX:CMSInitiatingOccupancyFraction=    年老代使用空间比达到这个值时开始cms gc

-XX:+PrintGCApplicationStoppedTime    打印垃圾回收期间程序暂停的时间
-XX:+PrintGCApplicationConcurrentTime    打印每次垃圾回收前,程序未中断的执行时间
-XX:+PrintHeapAtGC    打印GC前后的详细堆栈信息

测试配置:

-Xms1000m -Xmx1000m -Xmn400m
-XX:PermSize=128m -XX:MaxPermSize=128m
-Xss512k
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:SurvivorRatio=8
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/lxx.jvm
-XX:CMSInitiatingOccupancyFraction=80

Young GC:
    日志:
        2015-01-15T16:04:24.237+0800: 1691.665: [GC 1691.665: [ParNew: 350110K->22406K(368640K), 0.0055010 secs] 430492K->105988K(983040K), 0.0055690 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
    日志说明:

2015-01-15T16:04:24.237+0800: 1691.665: [
        GC 1691.665: [      # (Young GC) 时间戳
            ParNew:                     # ParNew(使用ParNew作为年轻代的垃圾回收期)
            350110K->22406K(368640K),   # 年轻代 回收前大小->回收后大小(年轻代容量)
            0.0055010 secs              # 回收时间
        ]
        430492K->105988K(983040K),      # 堆 回收前大小->回收后大小(堆容量)
        0.0055690 secs                  # 回收时间
    ] [
        Times: user=0.02 sys=0.00, real=0.01 secs   # Young GC用户耗时, Young GC系统耗时, Young GC实际耗时
    ]
    内存容量
        年轻代: 368640K(360M) = 400M / (8 + 1 + 1) * (8 + 1) (始终闲置着40M)
        堆:     983040K(960M) = 1000M - 40M
    内存变化:
        年轻代: 368640K(360M)   350110K - 22406K  = 327704K
        堆:     983040K(960M)   430492K - 105988K = 324504K
                                327704K - 324504K = 3200K 被移动到了Old Gen

Full GC
    日志:
        2015-01-15T16:29:53.894+0800: 3221.322: [Full GC 3221.322: [CMS: 614343K->614234K(614400K), 0.4258390 secs] 982961K->973059K(983040K), [CMS Perm : 121449K->121449K(131072K)], 0.4259380 secs] [Times: user=0.43 sys=0.00, real=0.42 secs]
        2015-01-15T16:28:49.218+0800: 3156.645: [Full GC (System) 3156.645: [CMS2015-01-15T16:28:49.377+0800: 3156.805: [CMS-concurrent-mark: 0.165/0.166 secs] [Times: user=0.19 sys=0.00, real=0.17 secs]
    日志说明:

Full GC (System)    # 显式调用System.gc产生的

    2015-01-15T16:29:53.894+0800: 3221.322: [
        Full GC 3221.322: [     # (Full GC) 时间戳
            CMS:
            614343K->614234K(614400K),  # old区 回收前大小->回收后大小(old区容量)
            0.4258390 secs              # 回收时间
        ]
        982961K->973059K(983040K),  [   # 堆 回收前大小->回收后大小(堆容量)
            CMS Perm : 121449K->121449K(131072K)    # Perm区 回收前大小->回收后大小(Perm区容量)
        ], 0.4259380 secs               # 回收时间
    ] [
        Times: user=0.43 sys=0.00, real=0.42 secs
    ]
    内存容量
        Old区:  614400K(600M) = 1000M - 400M = 960M - 360M
        堆:     983040K(960M)
    内存变化:
        Old区:  614400K(600M)   614343K - 614234K = 109K
        堆:     983040K(960M)   982961K - 973059K = 9902K

ParNew (promotion failed)
    发生在新生代晋升老年代时,老年代空间不够或连续空间不够却还没达到old区的触发值,引发Full Gc.
    2015-01-15T16:26:07.003+0800: 2994.431: [GC 2994.431: [ParNew (promotion failed): 351815K->349784K(368640K), 0.0095780 secs]2994.441: [CMS2015-01-15T16:26:07.074+0800: 2994.502: [CMS-concurrent-mark: 1.043/1.166 secs] [Times: user=4.25 sys=0.03, real=1.16 secs]

concurrent mode failure
    发生在CMS GC 运行过程中,老年代空间不足,引发MSC
    2015-01-15T16:26:07.003+0800: 2994.431: [GC 2994.431: [ParNew (promotion failed): 351815K->349784K(368640K), 0.0095780 secs]2994.441: [CMS2015-01-15T16:26:07.074+0800: 2994.502: [CMS-concurrent-mark: 1.043/1.166 secs] [Times: user=4.25 sys=0.03, real=1.16 secs]
    (concurrent mode failure): 614155K->614338K(614400K), 0.5011370 secs] 960545K->632140K(983040K), [CMS Perm : 121434K->121434K(131072K)], 0.5108440 secs] [Times: user=0.52 sys=0.00, real=0.51 secs]

[参考] http://hot66hot.iteye.com/blog/2075819

时间: 2024-08-04 17:02:57

JVM参数和jvm.log的相关文章

Java 6 JVM参数选项大全(中文版)

原文来自: http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm 本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文.主要介绍JVM中的非稳态选项及其使用说明. 为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料.希望这份文档,对正在研究JVM参数的朋友有帮助! 非稳态选项使用说明 -XX:+<option> 启用选项 -XX:-<option> 不

JVM系列三:JVM参数设置、分析

转:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),

JVM参数配置说明

Java虚拟机(JVM)参数配置说明 在Java.J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能. JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置.但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能. 另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过"OutOfMemory"类型的错误.呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的.

高手教大家如何配置JVM参数

/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UsePa

JVM参数调优

JVM参数调优 JVM参数调优是一个很头痛的问题,可能和应用有关系,下面是本人一些调优的实践经验,希望对读者能有帮助,环境LinuxAS4,resin2.1.17,JDK6.0,2CPU,4G内存,dell2950服务器. 一:串行垃圾回收,也就是默认配置,完成10万request用时153秒,JVM参数配置如下$JAVA_ARGS .= " -Dresin.home=$SERVER_ROOT -server -Xms2048M -Xmx2048M -Xmn512M -XXermSize=256

JVM参数设置、分析

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见GC种类及如何选择).本文将注重

(转)JVM系列三:JVM参数设置、分析

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见GC种类及如何选择).本文将注重

JVM参数与实际环境中的优化配置实践

如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置.可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位是一件很困难的事情.事情是一点点做的,不能因为着急就胡乱地配置,踏踏实实戒骄戒躁. JVM在Java体系中的地位 JVM是Java底层核心要素,可以说Java生态的东西都是运行在JVM里面的.From:https://docs.oracle.com/javase/8/docs/ JVM参数的含义 

JVM参数详细说明及调优策略

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见GC种类及如何选择).本文将注重