Расположение дампа потока JVM - PullRequest
15 голосов
/ 14 января 2010

Когда я запускаю команду kill -3 <pid> для моей Java-программы, она генерирует дамп потока на консоли. Как мне перенаправить это в файл?

Ответы [ 4 ]

23 голосов
/ 14 января 2010

Два варианта:

Запустите приложение Java с перенаправленным stdout

java com.example.MyApp > out.txt

Используйте взамен jstack.

Утилита jstack позволяет получить дамп потока и отправить вывод на текущую консоль вместо стандартного вывода Java-приложения, что позволяет вам перенаправить его.

Например, если PID вашего Java-приложения 12345 (используйте утилиту jps , чтобы быстро найти его):

jstack 12345 > threads.txt
3 голосов
/ 14 января 2010

Я обычно использую профилировщик NetBeans , но jvisualvm доступен из командной строки.

2 голосов
/ 14 января 2010

Если вам нужны подробности всех потоков и другие подробности JVM, попробуйте jconsole.

0 голосов
/ 06 декабря 2015

Пожалуйста, добавьте следующие аргументы JVM в ваше приложение. Дамп потока должен быть записан в dump.log.

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=dump.log

Обратите внимание, что он не перенаправляет, но включает ведение журнала диагностики JVM. Так что возможно и над головой.

Однако, если вы можете использовать JDK в среде, используя jstack или jcmd ( jcmd предпочтительнее с JDK 1.8 ), вы можете захватить дамп потока и перенаправить в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...