C++程序立即使用2 GB的RAM:如何找到罪魁祸首?

inv*_*ino 1 c++ ram memory-management

我有一个程序,在初始化时查询时,立即使用> 2 GB的RAM.基本上代码是这样的:

#include <blah>

int main() {
    cout << get_mem_usage() << endl;
    //Lots of things happen, but no significant memory usage
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量:[2013-02-15 18:38:05.865283] 2147.71 Mb

但是,我链接到许多不同的共享对象文件:我检查了ldd,我链接到58个库,组合的.so大小为66 MB.

我很确定get_mem_usage程序返回正确的值:这些与top和massif输出一致.

我还要提一下,我正在与高能物理分析的ROOT框架联系起来.

我使用的是Linux x86_64,而get_mem_usage()函数是自行开发的.

如果可能的话,我想减少程序的内存使用量.

Sté*_*ane 5

我的第一个猜测:你链接的一些库中的静态启动.

插入一个长暂停作为第一行,main()并查看/ proc/<pid> /以查看内存的分配位置.例如:

  • 的/ proc/12345 /任务/ 12345 /图
  • 的/ proc/12345 /任务/ 12345/smaps