解释 pprof 堆图
Interpreting pprof heap diagrams
当我使用 pprof 分析堆时,我得到以下信息:
但是,我不清楚如何解释该可视化。特别是:
"The memory next to the arrows means _____ and the memory inside of a box means ______. So when a box has multiple arrows from it, it means _____, and when it has multiple arrows to it, it means _____"。
- 此函数的感知累积内存消耗包括其所有子函数
- 此函数的感知内存消耗不包括它的所有子函数
- 它调用多个子函数
- 多个函数调用它
堆和 CPU 分析模式之间箭头的含义没有区别。
您可能对 top
pprof 命令的输出感兴趣,它可以为您提供以下形式的结果:
9701.61kB of 9701.61kB total ( 100%) Dropped 112 nodes (cum <=
48.51kB) Showing top 10 nodes out of 29 (cum >= 3611.54kB)
flat flat% sum% cum cum%
4549.72kB 46.90% 46.90% 4549.72kB 46.90% mystery.function
2587.52kB 26.67% 73.57% 2587.52kB 26.67% reflect.unsafe_NewArray
1024.02kB 10.56% 84.12% 1024.02kB 10.56% encoding/xml.copyValue
514kB 5.30% 89.42% 514kB 5.30% compress/gzip.NewReader
514kB 5.30% 94.72% 514kB 5.30% net/http.(*Transport).dialConn
512.34kB 5.28% 100% 512.34kB 5.28% runtime.makeslice
0 0% 100% 514kB 5.30% bytes.(*Buffer).ReadFrom
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).Decode
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).DecodeElement
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).unmarshal
这里是(恕我直言)使用 pprof 进行 Go 堆分析的两个最佳参考:
当我使用 pprof 分析堆时,我得到以下信息:
但是,我不清楚如何解释该可视化。特别是:
"The memory next to the arrows means _____ and the memory inside of a box means ______. So when a box has multiple arrows from it, it means _____, and when it has multiple arrows to it, it means _____"。
- 此函数的感知累积内存消耗包括其所有子函数
- 此函数的感知内存消耗不包括它的所有子函数
- 它调用多个子函数
- 多个函数调用它
堆和 CPU 分析模式之间箭头的含义没有区别。
您可能对 top
pprof 命令的输出感兴趣,它可以为您提供以下形式的结果:
9701.61kB of 9701.61kB total ( 100%) Dropped 112 nodes (cum <=
48.51kB) Showing top 10 nodes out of 29 (cum >= 3611.54kB)
flat flat% sum% cum cum%
4549.72kB 46.90% 46.90% 4549.72kB 46.90% mystery.function
2587.52kB 26.67% 73.57% 2587.52kB 26.67% reflect.unsafe_NewArray
1024.02kB 10.56% 84.12% 1024.02kB 10.56% encoding/xml.copyValue
514kB 5.30% 89.42% 514kB 5.30% compress/gzip.NewReader
514kB 5.30% 94.72% 514kB 5.30% net/http.(*Transport).dialConn
512.34kB 5.28% 100% 512.34kB 5.28% runtime.makeslice
0 0% 100% 514kB 5.30% bytes.(*Buffer).ReadFrom
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).Decode
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).DecodeElement
0 0% 100% 3611.54kB 37.23% encoding/xml.(*Decoder).unmarshal
这里是(恕我直言)使用 pprof 进行 Go 堆分析的两个最佳参考: