火焰图

火焰图标签页提供了一个倒置的调用图,可聚合相同的调用堆栈。也就是说,共享相同调用者序列的相同方法或函数会被收集起来,并在火焰图中表示为一条更长的条形(而不是像在调用图中那样显示为多个较短的条形)。这使得更容易看出哪些方法或函数耗时最多。然而,这也意味着横轴不代表时间线;相反,它表示每个方法或函数执行所需的相对时间。

为了帮助说明这个概念,请参考图 1 中的调用图。请注意,方法 D 对 B 进行了多次调用(B1、B2 和 B3),并且其中一些对 B 的调用又对 C 进行了调用(C1 和 C3)。

图 1. 包含共享共同调用者序列的多个方法调用的调用图。

由于 B1、B2 和 B3 共享相同的调用者序列(A → D → B),它们被聚合起来,如图 2 所示。类似地,C1 和 C3 也被聚合,因为它们共享相同的调用者序列(A → D → B → C);请注意,C2 未包含在内,因为它具有不同的调用者序列(A → D → C)。

图 2. 聚合共享相同调用堆栈的相同方法。

聚合后的调用用于创建火焰图,如图 3 所示。请注意,对于火焰图中的任何给定调用,耗时最长的被调用者会首先出现。

图 3. 图 5 中所示调用图的火焰图表示。