Назад | Перейти на главную страницу

Дамп потока в файл

Я прочитал, что могу найти идентификатор процесса, а затем использовать команду kill, чтобы сохранить дамп потока в файл. Но следующий пример ничего не возвращает ...

# ps aux | grep -i java
wcuser    9136  0.0 17.2 3416012 1412772 ?     Sl   Oct10   2:32 /usr/bin/java -Djava.util.logging.config.file=/home/../conf/logging.properties ..... ...... start

# kill -3 9136

Что такое дамп потоков?

Насколько точно это работает?

Можно ли автоматизировать процесс периодического снятия дампа в файл?

Он отправляет его туда, где указан стандартный вывод для этого процесса. Более простой способ - использовать jstack, который предоставляется JDK. С помощью этого инструмента вы можете просто:

jstack <pid> > thread-dump.out

Убедитесь, что вы делаете это как пользователь, от имени которого выполняется процесс.

Что такое дамп потока, представляет собой моментальный снимок того, где все текущие потоки в этом процессе Java заняты в стеке. Существуют инструменты, которые упрощают анализ необработанных дампов потоков, например VisualVM или TDA.

Конечно, можно делать это периодически, просто поместив подобное утверждение в cronjob.