自动导出hprof日志
第一种方法:
Tomcat的hprof日志是一种用于分析Java堆内存使用情况的工具,它可以帮助开发人员找到内存泄漏的原因。
hprof日志可以在特定的时间点对Java堆内存进行快照,并生成详细的分析报告。
启用hprof日志导出的具体步骤如下:
1、找到tomcat1安装目录下的bin文件夹。
2、编辑catalina.sh文件,在catalina.sh文件中设置环境变量,添加JVM参数来启用hprof。
在catalina.sh中添加以下内容:
JAVA_OPTS="$JAVA_OPTS -agentlib:hprof=heap=dump,format=b,file=/path/to/dump.hprof"
export JAVA_OPTS
3、重启tomcat1服务。
注意:
-agentlib:hprof:启用hprof代理;
heap=dump:表示在达到指定条件时,将堆内存转储到文件中;
format=b:指定转储文件的格式为二进制;
file=/path/to/dump.hprof:指定转储文件的存储路径和文件名。
重启tomcat1服务后,当满足hprof的触发条件时,它会将堆内存快照导出到指定的文件/path/to/dump.hprof中。
hprof可能不在所有JVM版本中都可用,且在某些生产环境中可能会影响性能。
第二种方法:
Tomcat的hprof日志是一种用于分析Java堆内存使用情况的工具,它可以帮助开发人员找到内存泄漏的原因。
要导出hprof日志,需要启用Tomcat的Heap Dump On Out Of Memory Error(内存溢出错误时导出堆转储)特性。
启用hprof日志导出的具体步骤如下:
1、找到tomcat1安装目录下的bin文件夹。
2、编辑catalina.sh文件,在catalina.sh文件中设置环境变量,添加JVM参数来启用hprof。
在catalina.sh中添加以下内容:
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump"
export JAVA_OPTS
3、重启tomcat1服务。
注意:
-XX:+HeapDumpOnOutOfMemoryError:启用hprof的关键参数;
-XX:HeapDumpPath:用于指定hprof文件的保存路径。
当Tomcat因OutOfMemoryError而产生hprof日志时,就会自动保存在指定的路径。
生成的hprof文件可能会非常大,因此应该确保-XX:HeapDumpPath 指向一个有足够空间的磁盘分区。
手动导出hprof日志
Tomcat的hprof日志是一种用于分析Java堆内存使用情况的工具,它可以帮助开发人员找到内存泄漏的原因。
dump文件(.hprof)日志生成方式:
# 查看tomcat1进程PID
命令:cd /usr/local/src
ps -ef | grep tomcat1
# 根据tomcat1进程PID手动导出.hprof文件
命令:jmap -dump:format=b,file=tomcat1.hprof [PID]
或 jmap -dump:live,format=b,file=tomcat1.hprof [PID]