排查JVM
要生成 .hprof
文件,可以使用以下方法:
1. 使用 JVM 参数生成堆转储
在启动 Java 应用时添加以下 JVM 参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof
例如:
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/user/heapdump.hprof -jar yourapp.jar
当发生 OutOfMemoryError
时,JVM 会自动生成堆转储文件。
2. 使用 jmap
工具手动生成堆转储
查找 Java 进程的 PID
jps -l
生成堆转储
jmap -dump:format=b,file=/path/to/heapdump.hprof <PID>
示例:
jmap -dump:format=b,file=/home/user/heapdump.hprof 12345
3. 使用 jcmd
工具生成堆转储
查找 Java 进程的 PID
jcmd
生成堆转储
jcmd <PID> GC.heap_dump /path/to/heapdump.hprof
示例:
jcmd 12345 GC.heap_dump /home/user/heapdump.hprof
注意事项
确保目标路径有写权限。
生成的
.hprof
文件可能较大,确保有足够的磁盘空间。使用
jmap
或jcmd
需要 Java 开发工具包(JDK)而非仅仅是 Java 运行时环境(JRE)。
通过以上方法,您可以在 Ubuntu 系统上生成 Java 应用的 .hprof
堆转储文件,以便进行进一步的分析和调试。
评论