Анализ файла дампа процесса Java? - PullRequest
13 голосов
/ 07 октября 2010

Если я получу дамп, используя Windbg, Java-процесс, работающий в Windows

Могу ли я (легко?) Проанализировать кучу, объекты и потоки Java?

Точно так же, как я мог бы это сделатьс SOS для .Net процесса?

В противном случае - как можно в автономном режиме отладить проблему, возникающую в производственных системах?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 07 октября 2010

jvisualvm может использоваться для загрузки дампа и последующего его анализа

РЕДАКТИРОВАТЬ:

Это происходит в JDK Redist ...

5 голосов
/ 07 октября 2010
1 голос
/ 26 сентября 2018

Windows minidumps (.dmp) можно использовать с этими утилитами:

  1. jvisualvm Утилита от JDK может получить как дамп потока, так и дамп кучи

    • Открыть jvisualvm
    • На панели Applications найдите VM Coredumps
    • Щелкните правой кнопкой мыши
    • Выбрать Add VM Coredump...
    • Обзорна ваш .dmp файл мини-дамп
    • Нажмите OK
    • Щелкните правой кнопкой мыши новый элемент в VM Coredumps
    • Выбрать Thread Dump
    • Повторитьдля Heap Dump
  2. jstack утилита из JDK может показать стек Java из мини-дампов Windows (.dmp)

    Вот пакетный скрипт для этого:

    :: 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
    
0 голосов
/ 24 июля 2013

NetBeans 6.9.1 может загружать файл .hprof (Профиль -> Загрузить дамп кучи). Затем, например, вы можете искать самый большой объект и видеть его внутренности.

...