mongodb内存泄漏通过C ++驱动程序插入文档

时间:2013-08-01 16:04:52

标签: c++ mongodb memory memory-leaks

我正在逐行循环遍历一系列CSV文件。对于每一行,我创建一个BSONObjBuilder对象,然后将builder.obj()添加到std :: vector ...每10k行我将向量插入数据库然后清除向量

mdb.insert(collection, myvector);
myvector.clear()

每个CSV文件中有数百万行。我注意到mongod进程占用了越来越多的RAM ....直到最终内存使用量达到100%

PID   USER     PR  NT VIRT   RES  SHR S %CPU %MEM
4450 mongod    15   0 73.2g  34g  33g S 45.7 97.0   3848:30 mongod  

这里发生了什么?在我看来,有一个内存泄漏?我的代码中肯定没有内存泄漏。

1 个答案:

答案 0 :(得分:1)

当您致电clear时,它会清除元素,但可能不会降低容量。
已经回答here

旧的skool;

std::vector<T>(v).swap(v);

请注意,C ++ 11有shrink_to_fit可能会有所帮助,但可能无效。