Sì, è possibile eseguire Oracle JDK/OpenJDK su Linux.
L'idea è di trovare ID thread nativo (TID) e quindi esaminare il tempo di modifica dello pseudo file /proc/JAVA_PID/task/TID
.
Se si dispone di un dump di thread, questo è banale: l'id del thread nativo verrà stampato dall'intestazione del thread.
Per esempio, processo Java PID è 2086. È tipo
$ jstack 2086
e ottenere una traccia dello stack con il seguente filo di interesse:
"Thread-26" prio=10 tid=0x00007f96c80c2800 nid=0x86a waiting on condition [0x00007f96c0ff2000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
Dove nid=0x86a
è l'ID thread nativo. 0x86a = 2154, in modo che desideri esplorare compito 2154 del processo 2086:
$ ls -ld /proc/2086/task/2154
dr-xr-xr-x 6 user user 0 Mar 10 23:12 /proc/2086/task/2154
^^^^^^^^^^^^
the thread start time
Grazie per l'input. Comunque non sto capendo la spiegazione. Ho una discarica di thread. Esiste un file pseude TID per ogni thread? Se potessi fornire un esempio, sarebbe fantastico. –
@bobdabelina Ho aggiornato la risposta con un esempio. – apangin
Grazie mille. Questo è molto utile. –