Full GC 分析:设置 Java JVM 参数实现在Full GC前后自动生成Dump
共有三个VM参数需要设置:
HeapDumpBeforeFullGC :实现在Full GC前dump。
HeapDumpBeforeFullGC :实现在Full GC后dump。
HeapDumpPath :设置Dump保存的路径
方法1:
启动 jvm 时,带上这些参数(这个方法适合开发测试环境)
java -Xms200m -Xmx200m -Xmn50m -XX:PermSize=30m -XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC -XX:HeapDumpPath=e:\dump -jar abc.jar
方法2:
使用 jinfo 命令进行设置。(生产环境常用的方法)
第一步,通过jps获得java程序的pid
#jps 5940 Main 3012 Jps
第二步,调用jinfo命令设置VM参数
#jinfo -flag +HeapDumpBeforeFullGC 5940 #jinfo -flag +HeapDumpAfterFullGC 5940
第三步,查看参数是否生效
flags 里面看有没有相关设定
#jinfo 5940 VM Flags: Non-default VM flags: -XX:CICompilerCount=3 -XX:+HeapDumpAfterFullGC -XX:+HeapDumpBeforeFullGC -XX:HeapDumpPath=null -XX:InitialHeapSize=130023424 -XX:+ManagementServer -XX:MaxHeapSize=2051014656 -XX:MaxNewSize=683671552 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=42991616 -XX:OldSize=87031808 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC Command line: -XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC -XX:HeapDumpPath=/tmp/java_dd_dump -Djava.rmi.server.hostname=172.19.89.45 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.rmi.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -javaagent:/home/tomcat/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=ikovj3am8l@16b32ac72953576 -Darms.appName=dzcx-socket
方法3:
开发程序调用JMX的API来实现
得到了Full GC前后的dump, 接下来就可以使用一些分析工具(如MAT)来分析Full GC产生的原因了。
方法2:
使用JConsole等工具调用JMX服务的com.sum.management.HotSpotDiagnostic.setVMOption方法来实现。
第一个参数为HeapDumpBeforeFullGC, 第二个参数为true表示在Full GC前进行dump.
第一个参数为HeapDumpAfterFullGC, 第二个参数为true表示在Full GC后进行dump.
方法4:
使用 JConsole 等工具调用 JMX 服务的 com.sum.management.HotSpotDiagnostic.setVMOption 方法来实现。
第一个参数为 HeapDumpBeforeFullGC, 第二个参数为 true 表示在 Full GC 前进行dump.
第一个参数为 HeapDumpAfterFullGC, 第二个参数为 true 表示在 Full GC 后进行dump.
查看出现几次 GC
这里出现了 FGC 5 次了
# jstat -gcutil 26899 1000 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 66.12 5.36 64.37 94.39 91.85 667 5.929 5 0.870 6.799 0.00 66.12 25.78 64.37 94.39 91.85 667 5.929 5 0.870 6.799 0.00 66.12 36.73 64.37 94.39 91.85 667 5.929 5 0.870 6.799 0.00 66.12 55.40 64.37 94.39 91.85 667 5.929 5 0.870 6.799
参考
Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump
共 0 条评论