如何通过pprof Web界面查看函数中内存分配的具体来源?
通过pprof Web界面定位函数内存分配细节
你当前打开的是默认的累积分配视图,仅展示总分配量占比,无法呈现单个函数内的具体分配来源。按以下步骤调整即可获取有用信息:
1. 切换到分配采样视图
不要直接用-web参数启动,先进入pprof交互式命令行:
go tool pprof memprofile.out
在pprof提示符下,先切换视图类型:
# 查看内存分配空间占比 pprof> alloc_space # 若要查看分配次数,用 alloc_objects pprof> alloc_objects
输入web打开Web界面,此时会展示调用链中每个函数的分配占比,点击函数节点可展开查看内部调用的分配情况。
2. 定位到具体代码行
想知道函数内哪一行产生分配,有两种方式:
- 交互式命令行中输入:
直接输出带分配统计的源码行,明确每行的分配量/次数。pprof> list 你的目标函数名 - Web界面中点击目标函数节点,选择
Source标签,查看标注了分配数据的源码。
3. 优化采样精度(可选)
默认pprof每分配512KB才采样一次,小内存分配可能被忽略。若要捕获所有分配,重新生成profile时添加参数:
go test -bench . -benchmem -memprofile memprofile.out -memprofilerate=1
内容的提问来源于stack exchange,提问作者blank.teer
相关产品推荐
相关产品推荐

