排查JVM

January 08, 2025 作者: pika-chu 分类: Java 浏览: 4 评论: 0

要生成 .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 工具手动生成堆转储

  1. 查找 Java 进程的 PID

    jps -l
    
    
  2. 生成堆转储

    jmap -dump:format=b,file=/path/to/heapdump.hprof <PID>
    
    

    示例:

    jmap -dump:format=b,file=/home/user/heapdump.hprof 12345
    
    

3. 使用 jcmd 工具生成堆转储

  1. 查找 Java 进程的 PID

    jcmd
    
    
  2. 生成堆转储

    jcmd <PID> GC.heap_dump /path/to/heapdump.hprof
    
    

    示例:

    jcmd 12345 GC.heap_dump /home/user/heapdump.hprof
    
    

注意事项

  • 确保目标路径有写权限。

  • 生成的 .hprof 文件可能较大,确保有足够的磁盘空间。

  • 使用 jmapjcmd 需要 Java 开发工具包(JDK)而非仅仅是 Java 运行时环境(JRE)。

通过以上方法,您可以在 Ubuntu 系统上生成 Java 应用的 .hprof 堆转储文件,以便进行进一步的分析和调试。

#Java(4)

评论