像 -
这样的结构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()实际上没有释放内存。
这是一个合理的评估,如果是,那么解决这个问题的正确方法是什么?
谢谢!