You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Valgrind(含Callgrind)分析程序中内存占用最高的函数?

如何用Valgrind工具按函数维度找出内存占用最高的函数

Callgrind主要用来分析CPU使用率和函数调用频率,并不适合直接统计内存占用。要按函数维度分析内存分配/占用,Valgrind套件里的Massif才是专门做这个的工具,下面是具体操作步骤:

  1. 生成内存分析数据
    运行你的可执行文件时指定Massif工具:

    valgrind --tool=massif ./your_executable
    

    执行完成后,会生成一个名为massif.out.<进程ID>的输出文件。

  2. 解析并查看函数级内存统计
    使用Valgrind自带的ms_print工具解析输出文件:

    ms_print massif.out.<进程ID>
    

    输出内容里重点看这两部分:

    • Overall heap usage:统计整个程序运行周期内的总内存分配、释放情况,以及峰值内存占用。
    • Detailed snapshots:对应内存峰值的时间点,会按函数维度列出内存分配的占比和具体数值,直接就能找到内存占用最高的函数。
  3. 可选:跟踪栈内存
    如果需要同时分析栈内存的占用,添加--stacks=yes选项:

    valgrind --tool=massif --stacks=yes ./your_executable
    

如果需要更直观的可视化分析,可以用massif-visualizer工具,它能把内存变化和函数分配情况以图表形式展示。

内容的提问来源于stack exchange,提问作者yeepaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:52:05