Если зависло приложение
Если зависло приложение, необходимо снять дамп потоков и памяти, после чего зареги стрировать ошибку.
Как снять дамп потоков?
Обычно для расследования таких ошибок хватает дампа потоков выполнения приложения.
Для того чтобы снять дамп потоков, можно воспользоваться стандартной утилитой jstack
, которая входит в состав JDK (Java Development Kit). Для этого необходимо выполнить следующую команду в командной строке от имени администратора:
jstack -l 22668 > threaddump.txt
Здесь 22668
— pid процесса приложения. Узнать его можно через диспетчер задач (в зависимости от ОС). Если же этим способом сделать это не получается (по причине сбоя подключения), утилиту необходимо запустить с флагом -F
:
jstack -F 22668 > threaddump.txt
Далее данный файл с дампом потоков можно указать в отчете об ошибке.
Официальная документация по утилите: https://docs.oracle.com/en/java/javase/11/tools/jstack.html.
Как снять дамп памяти?
Для того чтобы снять дамп памяти, можно воспользоваться стандартной утилитой jmap
, которая входит в состав JDK (Java Development Kit). Для этого необходимо выполнить следующую команду в командной строке от имени администратора:
jmap -dump:format=b,file=memorydump.hprof <pid>
Если же этим способом сделать это не получается (по причине сбоя подключения), необходимо запустить с флагом -F
:
jmap -dump:format=b,file=memorydump.hprof -F <pid>
Далее данный файл с дампом потоков можно указать в отчете об ошибке.
Официальная документация по утилите: https://docs.oracle.com/en/java/javase/11/tools/jmap.html.
Что делать дальше?
Если вся необходимая информация получена и ошибка зарегистрирована, можно закрывать приложение. Если интерактивно это сделать не получается, то можно воспользоваться диспетчером задач (в зависимости от ОС), либо убить процесс через командную строку:
kill -f 22668