2017-06-19 58 views
0

我目前正在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

回答

1

兩個結果都可能是正確的。 Massif配置文件堆和可能的堆棧。 另一方面,系統監視器提供有關總內存使用情況的信息,包括正在運行的映像(其中還包括靜態數據內存)的大小。

對於你的問題,你應該依靠地塊的結果。

+0

系統監視器提供的編號還包括地塊的內部簿記作爲開銷。 – kolrabi