我正在为一个学校项目创建一个性能驱动的程序,因此,我想我应该分析一下我的程序的内存使用情况。
为此,我使用了瓦兰,无论有没有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的峰值呢?
发布于 2019-03-22 05:40:55
Massif给出了分配的字节数的2个数字:
您的程序分配的每个块都意味着一定的开销,例如,由于对齐/填充。在快照列表中,有用的列-堆(B)显示了程序所要求的内容。额外堆(B)显示了开销。
109 is是有用的+额外的堆。
您可以使用--heap=size来调整开销。
https://stackoverflow.com/questions/55292927
复制相似问题