0

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

这里发生了什么?在我看来好像有内存泄漏?我的代码中绝对没有内存泄漏。

4

1 回答 1

1

当您调用 时clear,它会清除元素,但可能不会减少容量。
这已经回答here

无论是老派;

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

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

于 2013-08-01T16:11:33.930 回答