首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Massif运行带(Out)的Valgrind程序的不同结果

使用Massif运行带(Out)的Valgrind程序的不同结果
EN

Stack Overflow用户
提问于 2019-03-22 04:28:20
回答 1查看 455关注 0票数 1

我正在为一个学校项目创建一个性能驱动的程序,因此,我想我应该分析一下我的程序的内存使用情况。

为此,我使用了瓦兰,无论有没有Massif工具。每次测试的结果如下:

运行valgrind --leak-check=full -v ./main给了我上面的输出。好吧,明白了,总共大约有67 it的堆使用量,对吧?

但是我想知道我的程序在运行时分配了多少内存,所以我做了一些调查,找到了Massif工具,它就是这样做的。

因此,我运行了valgrind --tool=massif ./main,然后运行了ms_print massif.out.<pid>,其中<pid>是执行我的程序的已死进程的进程ID。这为我提供了在上述2张图片中显示的输出。

所以我的问题是,怎么可能堆的总使用量在67 my左右,但是Massif说它在某个点达到了109.9MB的峰值呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 05:40:55

Massif给出了分配的字节数的2个数字:

  • 程序分配的字节的“逻辑号”。
  • “间接费用”

您的程序分配的每个块都意味着一定的开销,例如,由于对齐/填充。在快照列表中,有用的列-堆(B)显示了程序所要求的内容。额外堆(B)显示了开销。

109 is是有用的+额外的堆。

您可以使用--heap=size来调整开销。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55292927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档