Если зависло приложение
Если зависло приложение, необходимо снять дамп потоков и памяти, после чего зарегистрировать ошибку.
Как снять дамп потоков?
Обычно для расследования таких ошибок хватает дампа потоков выполнения приложения.
Для того чтобы снять дамп потоков, можно воспользоваться стандартной утилитой
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