STL映射内存未被清除

时间:2017-03-15 10:04:36

标签: c++ stl

像 -

这样的结构
std::unordered_map <unsigned int, std::tuple<float, float, Data> >  testMap;

数据是 -

class Data
{
   std::string a;
   std::string b;
   std::string c;
   std::string d;
   std::string e;
}

最初填充了大约6500万条记录。

以下是元素如何插入地图的示例 -

unsigned int i = 10002;
float f1 = 2.0f, f2 = 3.0f; 
Data data; 
data.a = "ValueA";
data.b = "ValueB";
data.c = "ValueC";

testMap[i] = std::make_tuple(f1, f2, data);

此时,系统显示 -

free -h
             total       used       free     shared    buffers     cached
Mem:           29G        29G       200M       3.2G       5.4M       4.4G
-/+ buffers/cache:        14G       14.6G
Swap:           0B         0B         0B

然后引发一个事件,导致程序清除()此映射并重新加载它。

重新加载后,数字为 -

free -h
             total       used       free     shared    buffers     cached
Mem:           29G        29G       200M       3.2G       5.4M       4.4G
-/+ buffers/cache:        24G       4.6G
Swap:           0B         0B         0B

这似乎表明clear()实际上没有释放内存。

这是一个合理的评估,如果是,那么解决这个问题的正确方法是什么?

谢谢!

0 个答案:

没有答案