我有一個程序,當初始化查詢時,立即使用> 2 GB的RAM。基本碼是這樣的:立即使用2 GB RAM的C++程序:如何找到罪魁禍首?
#include <blah>
int main() {
cout << get_mem_usage() << endl;
//Lots of things happen, but no significant memory usage
return 0;
}
輸出: [2013年2月15日18:38:05.865283] 2147.71 MB
我,然而,鏈接到很多不同的共享對象的文件:我檢查了ldd,並且鏈接到58個庫,並且大小爲66 MB。
我很確定get_mem_usage程序返回了正確的值:這些與top和massif輸出一致。
我還應該提到,我正在連接高能物理分析的ROOT框架。
我使用的是Linux x86_64,並且get_mem_usage()函數是本地生成的。
我想盡可能減少程序的內存使用量。
什麼是'get_mem_usage'? – NPE 2013-02-14 18:45:31
問題是什麼?你想知道哪些圖書館消費了多少? – 2013-02-14 18:47:05
你看過你的.map文件來查看靜態RAM在哪裏和多少intiialized?注意,你也許能夠跟蹤來自庫的動態分配。 – 2013-02-14 18:49:17