Если зависло приложение

Если зависло приложение, необходимо снять дамп потоков и памяти, после чего зарегистрировать ошибку.

Как снять дамп потоков?

Обычно для расследования таких ошибок хватает дампа потоков выполнения приложения.

Для того чтобы снять дамп потоков, можно воспользоваться стандартной утилитой jstack, которая входит в состав JDK (Java Development Kit). Для этого необходимо выполнить следующую команду в командной строке от имени администратора:

jstack -l 22668 > threaddump.txt

22668pid процесса приложения. Узнать его можно через диспетчер задач (в зависимости от ОС). Если же этим способом сделать это не получается (по причине сбоя подключения), утилиту необходимо запустить с флагом -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