一、测试过程
1、空main程序
#include <cstdio>
using namespace std;
int main()
{
getchar();
return 0;
}
ps -aux | grep pname显示内存占用2916KB。
2、实例化一个map<int ,int>,不存入任何entry
#include <map>
#include <cstdio>
using namespace std;
int main()
{
map<int, int> m_map1;
getchar();
return 0;
}
内存占用2924KB
3、存入一个entry
#include <map>
#include <cstdio>
using namespace std;
int main()
{
map<int, int> m_map1;
for(int i = 0; i < 1; ++i) m_map1[i] = (i+100);
getchar();
return 0;
}
内存占用3060KB
3、逐渐增加保存进map的entry数量,至4200个,内存占用一直为3060KB
4、继续增加,从4300到8400个,内存占用一直为3192KB
二、结论
1.stl map的内存分配是成块的分配;
2.stl map的每个entry的内存的overhead大约在27字节左右;((3060-2916)/4200 = 35; 35-8 = 27)
3.个人认为,用stl map做微客户端会比较浪费内存,做服务器则很提高效率;