查看热点信息

前提条件

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

热点分析指的是采集某些时刻CPU、CYCLES、LOCK、CACHE_MISSES、ALLOC事件的栈信息,统计当前jvm中的热点方法。以倒火焰图的形式查询。

查看热点

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

    打开“概览”页面。

  2. 单击“热点”页签。

    打开“热点”页签,默认显示“热点函数”页面,点击“新建热点分析”按钮查看热点信息,如图2所示,参数如表1所示。

    • 服务器不支持热点分析时,“新建热点分析”按钮置灰禁用,页面标示无法使用原因和如何使用的方法。
    • 可以在启动时设置过滤不需要关注的函数方法;如果设置“需排除分析的方法”,可以点击“查看详情”查看。
    • 支持全屏显示,需要查看方法详情可以点击对应图形进行详情查看。
    • 可通过点击“重建热点分析”按钮进行重新创建热点分析任务。
    图1 新建热点分析
    表1 新建热点分析参数说明

    参数

    说明

    数据防干扰

    工具会暂停概览、CPU和GC页签下动态数据的采集,可以让热点分析更加准确。默认打开。

    采样方式

    配置是否限制采样时长。默认选择“指定采样时长”,可选:“指定采样时长”和“不限制采样时长”。

    采样时长(秒)

    显示采集数据的时长。采样方式选择“指定采样时长”时需配置。

    采样间隔(毫秒)

    显示采集数据的间隔时间。

    采样事件类型

    显示采集数据的类型。默认选择“CPU”,可选:

    • CPU
    • CYCLES
    • LOCK
    • CACHE_MISSES
    • ALLOC

    配置堆栈深度

    配置采集时的最大栈深。默认关闭。

    采集的最大栈深

    显示采集数据的最大栈深。打开“配置堆栈深度”时需配置;默认值为16,范围为1-2048。

    反汇编/字节码分析

    配置是否开启反汇编/字节码分析。默认关闭,开启后应用性能开销将增大,可能会影响程序性能。采样事件类型选择“CPU”、“CYCLES”或“CACHE_MISSES”时可配置。

    分析内核态调用

    配置是否开启内核态调用的分析。默认关闭。采样事件类型选择“CPU”、“CYCLES”或“CACHE_MISSES”时可配置。

    需排除分析的方法

    显示用户设置的不需采集的数据。

    必须分析的方法

    显示必须采集的数据。

    触发开始分析的方法

    显示触发开始分析的方法。采样事件类型选择“CPU”、“CYCLES”或“CACHE_MISSES”时可配置。

    触发结束分析的方法

    显示触发结束分析的方法。采样事件类型选择“CPU”、“CYCLES”或“CACHE_MISSES”时可配置。

    图2 热点函数
    • “图类型”下拉框可以选择:
      • 火焰图:查看对应的火焰图,鼠标悬停在函数块上会显示函数详细信息。

        y轴表示调用栈。每一层一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。x轴表示抽样数。如果一个函数在x轴占据的宽度越宽,就表示它被抽到的次数越多,即执行的时间越长。注意,x轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

      • 反向火焰图:以栈顶为起点,逐步回溯至栈底,将调用方法一致的调用栈进行聚合。
    • 单击按钮可上下翻转火焰图,单击按钮复原至火焰图最初展示状态,单击按钮使反向火焰图按函数占比排序,单击按钮使反向火焰图按函数名称排序;单击按钮可全屏查看,火焰图可通过点击按钮导出html文件查看。
    • 火焰图和反向火焰图提供搜索框,可搜索需要查找的方法名,在图中以紫色标记并显示其在全部堆栈中所占百分比,可点击“清除搜索”去除紫色标记和搜索结果。

  3. 单击“方法调用”页签。

    打开“方法调用”页签,点击“新建方法调用分析”按钮查看方法调用信息,如图3所示,参数如表2所示。

    • 新建任务时,可点击“增加类”选择多个需要分析的方法,目前无数量上限。
    • 输入类名称和方法时支持联想功能。
    • 当前页签进行数据分析时,其他需点击按钮启动分析的页签将会停止分析(如IO、数据库、Web页签),如需再次查看其他页签分析结果,请切换后再次分析。
    图3 新建方法调用分析
    图4 方法调用分析结果
    表2 新建方法调用分析参数说明

    参数

    说明

    新建方法调用分析

    类名称

    配置需要进行分析的类的名称。

    方法

    配置需要分析的方法名。

    增加类

    点击可添加更多需分析的类和方法。

    需排除的内容

    配置需要排除的类和方法名。

    必须分析的内容

    配置必须分析的类额方法名,必须分析的内容优先级大于需排除的内容。

    采集的最大栈深

    配置分析的最大栈深,只限制java栈。

    默认为8,范围为1-64。

    分析结果

    入口信息

    显示新建时配置的类和方法名。

    序号

    显示对所分析的类和方法的排序。

    状态

    显示对所分析的类和方法的状态表示。

    插桩详情

    显示对所分析的类和方法的插桩详情。

    点击具体方法实例,可以查看“调用关系树”和“热点统计”,可通过按钮进行切换。

    • 单击按钮可导出当前的分析报告,导出正在埋点的任务可能无调用关系树或热点统计数据。
    • 单击图标可一键展开或收缩对应内容。
    • 默认为总耗时的降序排列;蓝色数据条表示该数据在同列中的占比,数据越大越宽,最大宽度是单元格宽。
    图5 调用关系树
    图6 热点统计