使用 jstack 我得到了一棵正在运行的线程树。
以下 Thread.State 的含义是什么:
- 等待
- TIMED_WAITING
- 可运行
tid 和 nid 是什么意思?
线程的标题就像
“事件批处理(Spring UAA/1.0.2)”守护进程prio=10 tid=0x0000000041e27800 nid=0x363b等待条件[0x00007f9a89267000]
- 我如何导航到“等待条件”地址的源代码行
WAITING 表示线程正在等待某事。通常你会看到“WAITING (on object monitor)”,这意味着它正在等待一个 notify()。TIMED_WAITING 是 WAITING 的变体,其中线程有一个最大等待时间限制。RUNNABLE 表示当 jstack 运行时线程当前正在执行一些代码。
“tid”是线程在 JVM 中的线程 ID(可能是内存地址)。“nid”是本机线程 ID(十六进制)。在某些 Linux 系统上,此 ID 直接映射到进程 ID(在您的情况下为数字 13883(十进制))。
我你正在使用 Eclipse 插件http://lockness.plugin.free.fr/可能会感兴趣。使用此工具,可以快速导航到源代码和行。