2011-11-24 14 views
8

używając jstack, mam uruchomione drzewo wątków.Jak użyć jstack do znalezienia wątku blokującego

  1. Jaki jest sens folowing Thread.State użytkownika:

    • CZEKA
    • TIMED_WAITING
    • Runnable
  2. Co oznacza TID i NID?

  3. Tytuł gwint jest jak

    "tworzenie serii zdarzeń (Wiosna UR/1.0.2)" demon prio = 10 tid = 0x0000000041e27800 NID = 0x363b czeka na stan [0x00007f9a89267000]

    • w jaki sposób można przejść do kodu źródłowego linii z „czeka na stan” -address
+0

"W jaki sposób mogę przejść do linii kodu źródłowego" oczekującego warunku "-adress": W tym celu należy spojrzeć na stos stosu dla tego wątku. – Thilo

+1

czeka na stanie [0x000 ....] co to numer reprezentuje? –

Odpowiedz

12
  1. CZEKAJ oznacza, że ​​wątek na coś czeka. Zwykle zobaczysz "OCZEKIWANIE (na monitorze obiektu)", co oznacza, że ​​oczekuje na powiadomienie(). TIMED_WAITING to wariant OCZEKIWANIA, w którym wątek ma maksymalny limit czasu oczekiwania. RUNNABLE oznacza, że ​​wątek aktualnie wykonuje jakiś kod, gdy uruchomiono jstack.

  2. "tid" to identyfikator wątku, który ma wątek w JVM (może to być adres pamięci). "nid" jest natywnym id wątku (w hex). W niektórych systemach Linux ten identyfikator jest bezpośrednio odwzorowywany na identyfikator procesu (numer 13883 (dziesiętnie) w twoim przypadku).

  3. Używam Eclipse wtyczki http://lockness.plugin.free.fr/ może być interesujące. Za pomocą tego narzędzia można szybko przejść do kodu źródłowego i linii.

Powiązane problemy