用valgrind的地块测量C++应用程序的最大内存使用量(堆栈和堆)

问题描述:

我目前正在Ubuntu 16.04虚拟机上开发一个C++应用程序。我需要测量应用程序(堆栈和堆)的总内存使用情况,以便找出其最大值范围。因为我在内存分析是很新的,我结束了使用的valgrind如下:命令:用valgrind的地块测量C++应用程序的最大内存使用量(堆栈和堆)

valgrind --tool=massif --stacks=yes ./c++_app 
ms_print massif.out.<PID> 

在解码文件我得到的12.5 MB的尖峰上的相关图表。 另一方面,gnome-system-monitor显示25 MB为最大内存值。

我应该信任哪两项结果?是否应该与其他软件交叉检查内存使用情况?

+0

您也可以尝试'/ usr/bin/time -v YourProgram'查看最大驻留集。顺便说一句,你可能是指'MB'(兆字节)而不是'mb'(毫比特)。 –

+0

@Mark Setchell正确我的意思是MB(兆字节)。我会纠正它。 – dk13

两个结果都可能是正确的。 Massif配置文件堆和可能的堆栈。 另一方面,系统监视器提供有关总内存使用情况的信息,包括正在运行的映像(其中还包括静态数据内存)的大小。

对于你的问题,你应该依靠地块的结果。

+0

系统监视器提供的编号还包括地块的内部簿记作为开销。 – kolrabi