查看线程信息
前提条件
已创建在线分析任务,且分析任务正在进行中。
操作步骤
- 在Java性能分析工具界面的“任务/报告列表”区域单击“在线分析”列表中指定分析任务的名称。
打开“概览”页面。
- 单击“CPU”页签。默认打开“线程列表”页面,如图1所示。
- “线程列表”列出当前分析的Java进程启动的线程名称和线程状态。线程可以是以下状态之一:Runnable、Waiting或Blocked。
- 可通过线程搜索框和“显示用法”快速筛选数据。
- “执行线程转储”按钮可转储当前线程状态,便于后续页签分析展示。
- 单击“线程转储”页签。
默认进入“线程概览”,点击指定线程转储查看对应线程的概览情况,如图2所示。
- Java的线程转储指的是JVM中在某一个给定的时刻运行的所有线程的快照。
- 单击页面左侧
按钮可以删除不同时间的线程转储事件信息。
- 单击页面左侧
按钮可以保存当前线程转储信息,同一线程信息只能保存一次,可在主界面“数据列表”查看或下载。
- 可在数据展示区域的表头单击
图标搜索需要查看的线程名称或线程ID,单击
图标对状态、类型和优先级进行筛选展示,单击
图标可对CPU(ms)和Elapsed(s)参数进行排序,单击
图标可对表头展示参数进行设置,也可单击“查看”展示线程的Monitor详情。
- 单击“线程转储”页签中的“栈分布”页签。
可在左侧单击指定线程转储查看对应线程栈分布详情,如图3所示。
- 单击“展开”或“收起”对堆栈信息进行全部或部分显示。
- 表头单击
图标搜索堆栈信息,单击
图标可进行筛选展示,单击
图标可使排序展示。
- 单击“线程转储”页签中的“Monitor状态分布”页签。
可在左侧单击指定线程转储查看对应线程的Monitor状态分析详情,如图4所示。
查询分组支持“全部”、“WAITING”和“LOCKED”;查询分类支持“Monitor ID”、“Monitor类名”、“线程”和“Monitor ID/Monitor类名”,可输入多个Monitor类名或Monitor ID进行查询,其中使用“,”分隔开。
- 单击“线程转储”页签中的“锁分析图”页签。可在左侧单击指定线程转储查看线程锁分析图,如图 锁分析图所示。
- 在锁分析图中,左侧为线程,其颜色表示线程状态,绿色为RUNNABLE状态,红色为BLOCKED状态,黄色为WAITING状态,橙色为TIMED_WAITING状态;右侧为锁实例。
- 锁分析图通过连线表示线程对锁的占有情况。实线表示线程已占有锁,虚线表示线程阻塞在对应锁实例上,等待其他线程释放锁后占有。
- 观察模式:开启后,点击锁,会高亮显示锁本身和与请求的线程;也可切换以线程为观察视角,点击线程,将会高亮显示线程本身与持有锁。
- 对比模式:开启后,需要选择要对比的线程转储,对比结果默认以锁为视角显示两个线程与持有的锁。建议对比模式配合观察模式,方便观察两个时间点线程与持有锁的状态变化。也可以切换为以线程为观察视角,观察两个时间点的某个锁和请求线程的状态变化。只有执行两次及以上线程转储之后才可以开启对比模式。
- 如果目标Java应用中存在死锁,会检测出死锁,可以结合线程转储,定位死锁产生原因。
- 右下角可根据图标进行“锁分析图”的缩放和全屏查看。
- 单击选择“原始数据”。单击不同线程名称可以查看线程的事件信息,如图 原始数据所示。
父主题: 查看分析结果