java - Java进程的dump文件分析?

标签 java debugging windbg

如果我使用 Windbg 转储在 Windows 上运行的 Java 进程

我可以(轻松地)分析 Java 堆、对象和线程吗?

就像我可以为 .Net 进程使用 SOS 一样?

否则 - 我如何离线调试生产系统上发生的问题?

谢谢!

最佳答案

Windows 小型转储 (.dmp) 可以与这些实用程序一起使用:

  1. jvisualvm 来自 JDK 的实用程序可以为您提供线程转储和堆转储

    • 打开jvisualvm
    • Applications Pane 中,找到 VM Coredumps
    • 右键单击它
    • 选择添加 VM Coredump...
    • 浏览到您的 .dmp 小型转储文件
    • 确定
    • 右键单击 VM Coredumps 下的新项目
    • 选择线程转储
    • 重复堆转储
  2. jstack 来自 JDK 的实用程序可以显示来自 Windows 小型转储 (.dmp) 的 Java 堆栈

    这是一个批处理脚本:

    :: Shows java stack from Windows minidumps
    :: Argument %1: Path to minidump
    @ECHO OFF
    
    SET JDK_PATH=C:\Program Files\Java\jdk1.8.0_181\bin
    
    "%JDK_PATH%\jstack.exe" "%JDK_PATH%\java" "%~1"
    PAUSE
    
  3. jmap 来自 JDK 的实用程序可以将 Windows 小型转储 (.dmp) 转换为 java 堆转储 (.hprof)

    这是一个批处理脚本:

    :: Converts Windows minidump to Java heap dump (.hprof)
    :: Argument %1: Path to minidump
    @ECHO OFF
    
    SET JDK_PATH=C:\Program Files\Java\jdk1.8.0_181\bin
    
    "%JDK_PATH%\jmap.exe" -F -dump:format=b,file="%~dpn1.hprof" "%JDK_PATH%\java" "%~1"
    PAUSE
    

关于java - Java进程的dump文件分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883029/

相关文章:

java - hibernate中的自引用实体会导致StackOverflowErrors

java - while 循环出现问题

c++ - 批评我的堆调试器

eclipse - 设置 maven+jetty+eclipse 的调试配置

windows - 尝试使用 WinDbg : PEB is Paged Out, 分析转储文件不会加载符号

java - gcc -x java helloworld.java?

java - Hibernate Criteria Query ...添加新条件

c - 什么会导致指针分配出现段错误?

windows - 为什么我没有将ntdll正确加载到windbg中,但却下载了windbg x86?

multithreading - 使用windbg时如何设置当前线程