Как использовать jstack, чтобы найти блок-нить - PullRequest
8 голосов
/ 24 ноября 2011

используя jstack, я получил дерево запущенных потоков.

  1. Что означает следующая тема. Состояние:

    • ОЖИДАНИЯ
    • TIMED_WAITING
    • Runnable
  2. Что означают прилив и отлив?

  3. Название темы как

    «Пакетная обработка событий (Spring UAA / 1.0.2)» демон prio = 10 tid = 0x0000000041e27800 nid = 0x363b, ожидание при условии [0x00007f9a89267000]

    • Как мне перейти к строке исходного кода адреса "ожидания при условии"

1 Ответ

12 голосов
/ 24 ноября 2011
  1. WAITING означает, что поток ожидает чего-то.Обычно вы видите «WAITING (на объектном мониторе)», что означает, что он ожидает уведомления ().TIMED_WAITING - это вариант WAITING, где поток имеет максимальное время ожидания.RUNNABLE означает, что поток в настоящий момент выполняет некоторый код при запуске jstack.

  2. "tid" - это идентификатор потока, который имеется в JVM (может быть адресом памяти).«nid» - это собственный идентификатор потока (в шестнадцатеричном формате).В некоторых системах Linux этот идентификатор отображается непосредственно на идентификатор процесса (номер 13883 (в десятичном формате) в вашем случае).

  3. Если вы используете Eclipse, плагин http://lockness.plugin.free.fr/ можетпредставлять интерес.С помощью этого инструмента можно быстро перейти к исходному коду и строке.

...