Подтвердить что ты не робот

Как получить полную трассировку стека запущенной java-программы, которая принимает 100% -ный процессор?

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

Я могу получить pid запущенного процесса, чтобы как создать трассировку, которую я могу использовать для отчета об ошибке?

Я работаю на Linux.

4b9b3361

Ответ 1

Попробуйте jstack. Он даст вам полный список тем, что ваши потоки делают. Все, что ему нужно, это процесс pid.

Ответ 2

Возьмите дамп потока. Подключитесь через визуальную виртуальную машину и запросите дамп. Или если на unix тогда kill -3 pid или на окна Ctrl + Break на консоли процесса сделает это за вас. Свалка идет прямо к консоли. Вы также можете использовать jstack для сброса дампа.

Ответ 3

Ctrl+\ в linux (который отправляет SIGQUIT)

Ctrl+Break на окнах (который отправляет SIGBREAK в MSVCRT)

Ответ 4

В * nix, с помощью top, нажав H, вы можете видеть потоки.

Затем с jps вы можете увидеть, что pid помните, что если процесс был запущен с привилегиями, вы должны выполнить его с помощью sudo, например.

Если вы берете идентификатор потока и преобразуете его в шестнадцатеричный, то вы можете пересечь эти данные с выходом jstack pid.

Оба инструмента находятся в $JAVA_HOME/bin.

Ответ 5

Взгляните на VisualVM. С ним есть много хороших инструментов для профилирования, и вы можете выполнить дамп потока.