是否可以在JVM中检索给定Java线程的开始时间?
我有一个线程转储,正在查看一些有问题的线程,这些线程希望与使用时间的应用程序日志中的特定操作相关联。
是的,如果您在Linux上运行Oracle JDK / OpenJDK,则可能。
这个想法是找到本机线程ID(TID),然后查看/proc/JAVA_PID/task/TID
伪文件的修改时间。
如果您有线程转储,那么这很简单:线程头将显示本机线程ID。
例如对于Java进程PID为2086。您键入
$ jstack 2086
并使用以下感兴趣的线程获取堆栈跟踪:
"Thread-26" prio=10 tid=0x00007f96c80c2800 nid=0x86a waiting on condition [0x00007f96c0ff2000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
nid=0x86a
本机线程ID在哪里。0x86a = 2154,所以您想探索2086进程的任务2154:
$ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句