2011-11-24 12 views
8

utilizzando jstack ho ottenuto un albero di thread in esecuzione.Come utilizzare jstack per trovare il thread di blocco

  1. Qual è il significato del folowing Thread.State del:

    • ATTESA
    • TIMED_WAITING
    • RUNNABLE
  2. Cosa significa il tid e nid?

  3. Il titolo di un thread è come

    "Evento Elaborazione batch (primavera SAU/1.0.2)" daemon prio = 10 tid = 0x0000000041e27800 nid = 0x363b in attesa sulla condizione [0x00007f9a89267000]

    • Come posso passare alla Sourcecode-line della "attesa-on-condizione" -address
+0

"Come posso navigare verso la riga Sourcecode della" condizione di attesa "-indirizzo": Per questo è necessario guardare lo stacktrace per quel thread. – Thilo

+1

in attesa di condizione [0x000 ....] cosa rappresenta quel numero? –

risposta

12
  1. WAITING significa che il thread è in attesa di qualcosa. In genere si vedrebbe "WAITING (sul monitor dell'oggetto)" che significa che è in attesa di una notifica(). TIMED_WAITING è una variante di WAITING, in cui il thread ha un limite di tempo massimo per l'attesa. RUNNABLE significa che il thread sta attualmente eseguendo del codice quando è stato eseguito jstack.

  2. "tid" è l'ID del thread che il thread ha nella JVM (potrebbe essere un indirizzo di memoria). "nid" è l'id del thread nativo (in hex). Su alcuni sistemi Linux questo ID viene mappato direttamente su un ID di processo (numero 13883 (in decimale) nel tuo caso).

  3. Se si utilizza Eclipse, il plug-in http://lockness.plugin.free.fr/ potrebbe essere di interesse. Con questo strumento è possibile navigare rapidamente verso il codice sorgente e la linea.

Problemi correlati