微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java线程开始时间

是否可以在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐