读取分析器快照
在 分析器 工具窗口( )中,收集的数据显示在多个选项卡上: 火焰图、 调用树 和 方法列表。
浏览快照
您可以在保持聚焦于某个方法的同时在选项卡之间跳转。右键单击所需的方法,并选择要在其中打开此方法的其他视图。 右键单击所需的方法,并选择要在其中打开此方法的其他视图。

对于任何选项卡中的方法,均可打开 Merged Callees 和 Back Traces 树。 右键单击该方法,然后分别选择 方法合并被调用方 或 方法回溯。
火焰图
火焰图使用矩形直观表示应用调用树,这些矩形代表调用堆栈帧,并按宽度排序。 资源消耗较高的帧比其他帧更宽,并显示在左侧。
帧类型 | 浅色主题 | 深色主题 |
|---|---|---|
项目代码 | 黄色 | 黄色 |
库代码 | 紫色 | 灰色 |
原生代码 | 蓝色 | 蓝色 |

获取调用详细信息
将鼠标悬停在块上可查看帧详细信息的工具提示。 工具提示显示该帧在整个快照以及父帧中的时间占比。
缩放图表
使用火焰图工具栏上的
和
按钮,或使用滚轮缩放图表。
若要聚焦于特定方法,请双击图表中的相应块。
若要恢复图表的原始大小,请点击工具栏上的 1:1。
搜索图表
如果希望在图表中定位特定方法,请开始输入方法名称,或点击
并在搜索栏中输入名称。
图表会高亮显示与搜索请求匹配的方法名称的所有块。
使用
和
快速在搜索结果之间导航。 也可以使用工具栏上的按钮搜索整个图表或特定子树,并在找到结果后立即导航至对应位置。

捕获图表
您可以单独捕获并导出图表,而不包括快照中的其他数据。
点击
,选择 复制到剪贴板 ,或点击 保存 将图表导出为 .png 格式的图像。
您可以在火焰图中可视化两个快照之间的差异。
与基线比较
打开两个快照。 要打开快照,您可以运行分析器两次,或转到 并在此处选择快照。
点击 与基线比较… 按钮,并选择要用于比较的快照。
将打开一个包含对比结果的独立差异标签页,合并两个火焰图并以红色和绿色显示差异。
如果看到帧的某部分为绿色,则表示该方法在本次分析运行中执行速度变快。 红色表示相应方法在本次分析运行中变慢。

调用树
调用树 选项卡以树形结构组织采样数据。

该选项卡针对每个方法显示以下信息:
在总执行时间或父调用执行时间中的占比
累计执行时间
默认情况下,所显示的百分比基于总执行时间。您可以选择基于父帧查看数值。 默认情况下,百分比是相对于总执行时间的。您可以选择查看相对于父帧的数值。
在总量与上一级之间切换百分比显示
单击
,然后选择 显示总时间的百分比 或 显示父项的百分比。
折叠递归调用
涉及递归的调用栈可能难以分析。 在常规 调用树 视图中,递归调用将按照调用顺序依次显示,这可能导致几乎无限的调用栈滚动。
GoLand 会在调用栈中较高级别调用相同方法时检测到递归。 在此情况下,该子树将从调用树中移除,并重新附加到该方法的首次调用位置。 通过这种方式,您可以绕过递归,专注于消耗最多资源的方法及其所进行的调用。
折叠递归调用后,您可以将这些调用所耗费的总时间视为没有递归的情形。

折叠的递归调用在 调用树 选项卡中以 图标标记。 单击该图标可在单独的选项卡中打开递归调用树。 将鼠标悬停在递归图标上时会显示工具提示,您可以在其中预览合并调用的数量。

假设分析:聚焦特定方法
GoLand 允许您在 调用树 中检查特定节点和子树:您可以排除特定方法,或反过来,仅关注当前感兴趣的节点。
在 调用树 选项卡中右键单击所需节点,然后选择以下选项之一以在专用选项卡中打开结果:
聚焦于子树 :仅显示所选方法调用。 父方法样本计数器仅显示在所选子树中所花费的时间。
聚焦于调用 :显示所选方法及调用该方法的方法。 启用此选项后,每个帧仅显示在所选方法中所花费的时间。
排除子树 :忽略所选方法调用。
排除调用 :忽略对所选方法的所有调用。

方法列表
方法列表 会收集分析数据中的所有方法,并按累积采样时间进行排序。 此列表中的每个项都有多个视图:
反向跟踪 显示调用者的层级结构。 使用此视图可追踪哪些方法调用了所选方法。
合并的被调用方 是按照调用层级汇总方法的调用树。
被调用方列表 是按照调用层级汇总方法的方法列表。
