通常 pprof 展示的时候,以函数为维度进行聚合。
我们支持了更多维度的聚合:
- packages。以组建库为维度聚合。
- lines。以行号为粒度聚合。
以行号为粒度的聚合,在 top 图中非常有用。
结合 only my code, 我们可以很快的定位到, 自己写的哪一行代码分配了最多的内存。
图中 top 图第一行为灰色,说明是外部组件库代码,可以忽略。
在 perf2pprof.go 文件的 145 行,分配了最多内存。
点击 top 图上的这一行,我们可以直接查看对应的代码:
当以 packages 为维度聚合的时候。
我们也可以查看,分配最多内存的自己写的 package 的代码: