如何使用jstack来查找阻塞线程

时间:2011-11-24 10:32:47

标签: java jstack

使用jstack我得到了一个运行的线程树。

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

    • WAITING
    • TIMED_WAITING
    • RUNNABLE
  2. tid和nid是什么意思?

  3. 线程的标题就像

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

    • 如何导航到“等待条件”-address
    • 的源代码行

1 个答案:

答案 0 :(得分:12)

  1. WAITING表示线程正在等待某事。通常,您会看到“WAITING(在对象监视器上)”,这意味着它正在等待notify()。 TIMED_WAITING是WAITING的变体,其中线程具有等待的最大时间限制。 RUNNABLE表示当运行jstack时,线程当前正在执行某些代码。

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

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