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

mongod memory leak inserting documents via C++ drivers

本文关键字:驱动程序 插入 文档 C++ 内存 泄漏 mongod      更新时间:2023-10-16

我逐行循环遍历一系列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  

这是怎么回事?在我看来好像是内存泄漏了?我的代码中绝对没有内存泄漏。

当您调用clear时,它会清除元素,但可能不会减少容量。
已经在这里回答了这个问题

要么是Old skool;

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

请注意,C++11具有shrink_to_fit,这可能会有所帮助,但可能没有任何作用。