VisualVM第二章-Threads

Threads Tab页介绍

线程 Tab 页分三个部分:线程数量统计、线程取样、线程状态

线程数量统计

左上角统计了当前存线程数以及守护线程数。

Thread Dump

线程取样,点击 Thread Dump 可以对当前程序运行的线程进行取样分析。

取样文件默认存储在临时目录:

你还可以对当前 dump 文件另存为,保存到其他目录,以待后面分析。

线程状态

在 VisualVM 中线程有五种状态,分别是:

  • Running 运行,对应 Java 中的 Runnable 状态,即执行状态。

  • Sleeping 休眠,对应 Java 中的 TimedWaiting 状态,且通过Thread.sleep(timeout)触发,即sleep触发的等待状态。

  • Wait 等待,对应Java中线程 TimedWaiting、Waiting 状态,且通过wait(), wait(timeout), join(), join(timeout)触发,即wait触发的等待状态。

  • Park 常驻,对应Java中线程 TimedWaiting、Waiting 状态,且通过LockSupport.park(), LockSupoort.parkNanos(), LockSupport.parkUntil()触发,即LockSupport.park触发的等待状态。

  • Monitor 监视,对应Java中 Blocked 状态,即由synchronized、Lock锁阻塞触发的阻塞状态,若长时间出现此状态则需要注意死锁问题。