在JVM出现内存溢出或泄露时,为便于排查和定位,需要JVM的启动上增加相应的参数。主要是GC日志和内存DUMP参数。详细如下。
1.GC日志和内存DUMP参数配置
本文参数配置基于各厂商的JDK 6.0版本,低版本或高版本的参数有可能不同。各厂商JVM GC日志和内存DUMP参数配置如下:
(1)Oracle JVM
-Xloggc{目录}/managed1_gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${目录}
(2)HP JVM
-Xverbosegc:file=${目录}/mananged1_gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
-XX:HeapDumpPath=${目录}
(3)IBM JVM
-XverboseGClog: ${目录}/mananged1_gc.log
-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd
2.GC日志参数说明
2.1.Oracle JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -Xloggc{目录}/managed1_gc.log。
2、参数说明
(1)在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
(2)备注:如果只有-verbose:gc参数,gc日志会输出到控制台上,如果-verbose:gc和-Xloggc:filename参数共存,以-Xloggc为准。-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 可以增加,但是增加后产生的gc日志用HPjemeter工具不能识别,其中-XX:+PrintGC参数和单独的-verbose:gc或者单独的-Xloggc的输出是一样的,都是简要信息。
2.2.HP JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -Xverbosegc:file=${目录}/mananged1_gc.log。
2、参数说明
(1)在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
(2)HP JVM的GC日志文件生成时会自动增加进程号(PID),例如:managed1_gc.log.2252,其中2252为Java进程ID。
2.3.IBM JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -XverboseGClog{目录}/mananged1_gc.log。
2、参数说明
在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
3.内存DUMP参数说明
3.1.Oracle JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}。
2、参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。
(3)Oracle JVM的6.0版本去掉了-XX:+HeapDumpOnCtrlBreak参数,如果需要产生DUMP文件,请采用jmap命令,命令行格式如下:
jmap -dump:format=b,file=managed1_heapdump.hprof <pid>
其中managed1_heapdump.hprof表示生成的DUMP文件名称,pid表示Java进程号。
3.2.HP JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
-XX:HeapDumpPath=${目录}。
2、参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,如果不指定文件名,默认文件示例如下:java_pid2821.hprof.1313372696928,其中2821为Java进程号,1313372696928为自动生成的数字。
(3)-XX:+HeapDumpOnCtrlBreak参数表示可以通过kill -3 <pid>根据需要产生DUMP文件。
3.3.IBM JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd。
2、参数说明
(1)-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd表示可以根据需要通过kill -3 <pid>产生DUMP文件,%uid和%pid为变量。生成的文件名称示例:pidtestuser303118.phd,其中testuser为uid,303118为pid;IBM JVM采用kill -3同时会生成另外一个javacore文件,文件示例:javacore.20110815.173356.303118.0002.txt。
(2)IBM JVM当发生OOM时会自动生成DUMP文件,无需额外的参数配置
分享到:
相关推荐
性能测试,线程的 dump 看到线程的 死锁,等待 运行状态
适用于jvm运行生成的gc日志文件可视化分析
用java内存监控工具生成的JVM内存日志,用jmap生成的
同时,为了能更深入理解与之相关的知识点,本文特地编写了“第二章 基础知识”,详细的讲解与GC学习相关的JVM架构、JVM选项、Object内存布局、指针压缩等内容,以便读者能更加清晰的理解GC原理的底层逻辑。
JVM 输出 GC 日志导致 JVM 卡住
jvm配置参数详解,以及Java gc详解
jvmgc过程介绍(jpg)
jvm 配置jvm参数 配置jvm参数
IBM java dump 文件分析工具,分析java堆栈信息
深入详解JVM内存模型与JVM参数详细配置,感兴趣的小伙伴们可以一块学习下。
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。 -Xms:初始值 -Xmx:最大值 -Xmn:最小值 解决办法: 修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\...
JVM GC垃圾回收.pdf
本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小编一起来看下吧
Java 本身提供了多种丰富的工具来帮助开发人员查看和分析 GC 以及 JVM 内存的状况。 输出GC日志 输出 GC 日志对于跟踪分析 GC 的状况,无疑是最明显和直接的分析内存回收状况的方 法,只是 GC 日志输出后需要人肉的...
深入详解JVM内存模型与JVM参数详细配置.pdf
jvm gc jvm gc jvm调优 查看工具
JVM内存结构,配置参数,JVM调优监控,待完善
jvm内存反洗工具:
介绍了heap dump和thread dump,以及详细介绍dump工具Memory Analyzer的使用,最后讲解了Java对象的内存布局。
英文版的IBM JVM GC的非常详细的技术文档,包括GC的原因分析,GC日志分析,GC过程分析