我需要尽可能多地削减内存。我正在使用带有 STL 的标准 C++。该程序没有做太多(还),它仍然需要 960Kb [根据top
]!可执行文件大小仅为 64KB。
代码有 3000 行长,我显然不会发布。我相信问题不在于我的代码,而在于系统库。
一个 main() 函数(包括我的所有代码但不使用它)使用 732Kb 的 RAM!
简单代码:
int main() {
sleep(1000); //do nothing
return 0;
}
//Uses 732kb of RAM
我的代码没有全局变量(除了对我隐藏的库中的变量)。
我正在使用标准库:libstdc++ (STL)、GNU libc。还有一个 BSD 套接字和 libev 以及非标准的 STL 绳索类。
我可以运行一些内存分析器吗?
平台:Linux 2.6.18-32,32 位处理器,16MB 总系统 RAM,无可用交换
编译器:GCC 4
标准库:GCC 的 libstdc++
编译器选项:-Os(无调试符号)
我没有大量使用模板:容器和迭代器仅此而已。但是,我正在大量使用 SGI STL 绳索类。
测试环境是运行 Linux 的基本服务器,内存为 128MB,Pentium III 667 Mhz,CentOS 5.5,无仿真。
更新:我想知道库本身(代码大小)是否导致问题。共享库不需要加载到 RAM 中吗?