中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

查看线程信息

前提条件

已创建在线分析任务,且分析任务正在进行中。

操作步骤

  1. 在Java性能分析工具界面的“任务/报告列表”区域单击“在线分析”列表中指定分析任务的名称。

    打开“概览”页面。

  2. 单击“CPU”页签。
    默认打开“线程列表”页面,如图1所示。
    • “线程列表”列出当前分析的Java进程启动的线程名称和线程状态。线程可以是以下状态之一:Runnable、Waiting或Blocked。
    • 可通过线程搜索框和“显示用法”快速筛选数据。
    • “执行线程转储”按钮可转储当前线程状态,便于后续页签分析展示。
    图1 线程状态
  3. 单击“线程转储”页签。

    默认进入“线程概览”,点击指定线程转储查看对应线程的概览情况,如图2所示。

    • Java的线程转储指的是JVM中在某一个给定的时刻运行的所有线程的快照。
    • 单击页面左侧按钮可以删除不同时间的线程转储事件信息。
    • 单击页面左侧按钮可以保存当前线程转储信息,同一线程信息只能保存一次,可在主界面“数据列表”查看或下载。
    • 可在数据展示区域的表头单击图标搜索需要查看的线程名称或线程ID,单击图标对状态、类型和优先级进行筛选展示,单击图标可对CPU(ms)和Elapsed(s)参数进行排序,单击图标可对表头展示参数进行设置,也可单击“查看”展示线程的Monitor详情。
    图2 线程概览
  4. 单击“线程转储”页签中的“栈分布”页签。

    可在左侧单击指定线程转储查看对应线程栈分布详情,如图3所示。

    • 单击“展开”或“收起”对堆栈信息进行全部或部分显示。
    • 表头单击图标搜索堆栈信息,单击图标可进行筛选展示,单击图标可使排序展示。
    图3 栈分布
  5. 单击“线程转储”页签中的“Monitor状态分布”页签。

    可在左侧单击指定线程转储查看对应线程的Monitor状态分析详情,如图4所示。

    查询分组支持“全部”、“WAITING”和“LOCKED”;查询分类支持“Monitor ID”、“Monitor类名”、“线程”和“Monitor ID/Monitor类名”,可输入多个Monitor类名或Monitor ID进行查询,其中使用“,”分隔开。

    图4 Monitor状态分布
  6. 单击“线程转储”页签中的“锁分析图”页签。
    可在左侧单击指定线程转储查看线程锁分析图,如图 锁分析图所示。
    • 在锁分析图中,左侧为线程,其颜色表示线程状态,绿色为RUNNABLE状态,红色为BLOCKED状态,黄色为WAITING状态,橙色为TIMED_WAITING状态;右侧为锁实例。
    • 锁分析图通过连线表示线程对锁的占有情况。实线表示线程已占有锁,虚线表示线程阻塞在对应锁实例上,等待其他线程释放锁后占有。
    • 观察模式:开启后,点击锁,会高亮显示锁本身和与请求的线程;也可切换以线程为观察视角,点击线程,将会高亮显示线程本身与持有锁。
    • 对比模式:开启后,需要选择要对比的线程转储,对比结果默认以锁为视角显示两个线程与持有的锁。建议对比模式配合观察模式,方便观察两个时间点线程与持有锁的状态变化。也可以切换为以线程为观察视角,观察两个时间点的某个锁和请求线程的状态变化。只有执行两次及以上线程转储之后才可以开启对比模式。
    • 如果目标Java应用中存在死锁,会检测出死锁,可以结合线程转储,定位死锁产生原因。
    • 右下角可根据图标进行“锁分析图”的缩放和全屏查看。
    图5 锁分析图
  7. 单击选择“原始数据”。
    单击不同线程名称可以查看线程的事件信息,如图 原始数据所示。
    图6 原始数据