mongod内存泄漏通过C++驱动程序插入文档
mongod memory leak inserting documents via C++ drivers
我逐行循环遍历一系列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
,这可能会有所帮助,但可能没有任何作用。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 使用mongocxx驱动程序时包含头文件问题
- void*到驱动程序中的UnicodeString
- C++驱动程序看不到头文件
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 员工测试驱动程序数据结构
- 获取 OID(类型::b_oid)作为 MongoDB C++驱动程序中的字符串
- 如何在 c++ 中映射驱动程序?
- 如何在 cuda 中将 kd 树从主机复制到驱动程序
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 为什么我的驱动程序只读取部分字符串?
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何在C++中将OID_PM_WOL_PATTERN_LIST发送到NDIS驱动程序?
- C++ 创建 NdisProt 驱动程序的句柄
- 无法使用ODBC驱动程序插入BLOB对象
- mongod内存泄漏通过C++驱动程序插入文档
- 如何在MongoDB C++驱动程序中使用DBClientBase类插入文档
- 使用datastax c++驱动程序将大型二进制文件或数组(超过64MB)插入Cassandra
- 使用datastax CPP驱动程序改进在Cassandra数据库中的插入时间