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