火焰图深入:怎么读
更新时间:2026-10-01。已有 perf flamegraph,本文讲看懂图形而不是“看着热闹”。
一、宽度的含义
火焰图把调用栈折叠聚合,每帧宽度 ∝ 落在该栈的样本数,即占用 CPU 的比例,不是调用频次。帧高只表示调用栈深度,高不等于慢。
二、看哪里
关注“又宽又位于上方”的帧(大自时间,真正烧 CPU 的地方);宽底座但顶层分散说明开销分布在多个子调用。on-CPU 图看计算热点;线程在等(IO/锁)要用 off-CPU 图,否则什么都看不见。
三、差分火焰图
对比改动前后,red 变多/blue 变少,快速定位性能回归函数。

四、常见坑
- 把帧高/调用次数当性能。
- 用 on-CPU 图排查等待问题。
- 只看总宽度不看自时间。
小结
宽度=CPU 样本占比,热点看宽且顶部;等待类问题换 off-CPU,回归用差分图。下一篇 off-CPU 剖析。
总结
火焰图是采样聚合:帧的宽度 ∝ 落在该栈的样本数即占用 CPU 的比例而非调用次数,帧高只代表调用栈深度、高不等于慢;真正该优化的是“又宽又位于上方”的大自时间帧,on-CPU 图找计算热点,而线程在等 IO/锁时必须换 off-CPU 图否则一片空白,版本间的性能回归则用 red/blue 差分火焰图快速定位。