8

使用 jstack 我得到了一棵正在运行的线程树。

  1. 以下 Thread.State 的含义是什么:

    • 等待
    • TIMED_WAITING
    • 可运行
  2. tid 和 nid 是什么意思?

  3. 线程的标题就像

    “事件批处理(Spring UAA/1.0.2)”守护进程prio=10 tid=0x0000000041e27800 nid=0x363b等待条件[0x00007f9a89267000]

    • 我如何导航到“等待条件”地址的源代码行
4

1 回答 1

12
  1. WAITING 表示线程正在等待某事。通常你会看到“WAITING (on object monitor)”,这意味着它正在等待一个 notify()。TIMED_WAITING 是 WAITING 的变体,其中线程有一个最大等待时间限制。RUNNABLE 表示当 jstack 运行时线程当前正在执行一些代码。

  2. “tid”是线程在 JVM 中的线程 ID(可能是内存地址)。“nid”是本机线程 ID(十六进制)。在某些 Linux 系统上,此 ID 直接映射到进程 ID(在您的情况下为数字 13883(十进制))。

  3. 我你正在使用 Eclipse 插件http://lockness.plugin.free.fr/可能会感兴趣。使用此工具,可以快速导航到源代码和行。

于 2011-11-24T13:11:04.633 回答