2013-01-11 11 views
6

Io sono il debug di un'applicazione legacy Java, e la discarica filo (ottenuto tramite jstack) contiene alcune voci come la seguente:Come si interpreta al thread Java che è RUNNABLE ma senza traccia dello stack?

"Thread-8" prio=10 tid=0x0000000055f2c800 nid=0x49bf runnable [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

Questo è tutto. Nessuna traccia di stack.

Cosa sta succedendo qui? Come posso individuare il codice Java in esecuzione in questo thread?

+0

Perché l'hai postato come commento e non come risposta? – noahlz

+0

Il nome del thread non aiuta affatto; dovrebbero sempre denominare i thread correttamente. – irreputable

+0

@noahz: non avevo abbastanza fiducia in questo. Ho fatto una risposta e vedremo se alla comunità piace. –

risposta

3

Il thread non è (o non è stato) l'esecuzione del codice Java. Si tratta di attività di gestione non implementate in Java che non sono state richieste direttamente da alcun chiamante Java. Ad esempio, se il thread del sistema operativo corrispondente ha appena ricevuto un segnale.

+1

Forse questi sono i giochi in esecuzione a causa di 'jstack' stesso? Posso aggiungere un flag a jstack che rivela i frame nativi? – noahlz

+0

L'applicazione Java stava chiamando in una libreria C tramite JNI che avviava i thread nativi di Linux. – noahlz

Problemi correlati