【发布时间】:2013-01-30 16:03:27
【问题描述】:
我有一个程序,当在初始化时被查询时,它会立即使用 > 2 GB 的 RAM。基本上代码是这样的:
#include <blah>
int main() {
cout << get_mem_usage() << endl;
//Lots of things happen, but no significant memory usage
return 0;
}
输出: [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() 函数是自制的。
如果可能的话,我想减少程序的内存使用量。
【问题讨论】:
-
什么是
get_mem_usage? -
问题是什么?想知道哪些库消耗多少?
-
您是否查看过您的 .map 文件以了解静态 RAM 初始化的位置和数量?小心,您也可以跟踪库中的动态分配。
-
@Michael Dorgan:.map 文件是否仅适用于 Windows?
-
get_mem_usage是一个函数吗?如果是这样,您显示的(伪)代码将不会调用该函数 - 它会打印其地址。
标签: c++ memory-management ram