C++ Linux中的内存
我的程序将数据从文件加载到结构中C++ Linux中的内存,c++,linux,memory,allocation,C++,Linux,Memory,Allocation,我的程序将数据从文件加载到结构中 std::tr1::unordered_map< Key, Details*> std::tr1::无序地图 及 std::tr1::无序\u映射 Key:=std::string | int | long 详细信息:结构{Fields}(sizeof>=40字节) 我的程序周期性地从文件中读取新数据,然后回收旧结构。(大量新建/删除操作) 在windows中:重新加载数据~200mb后的内存使用情况 CentOS中的相同文件:每次重新加载后
std::tr1::unordered_map< Key, Details*>
std::tr1::无序地图
及
std::tr1::无序\u映射
Key:=std::string | int | long
详细信息:结构{Fields}(sizeof>=40字节)
我的程序周期性地从文件中读取新数据,然后回收旧结构。(大量新建/删除操作)
在windows中:重新加载数据~200mb后的内存使用情况
CentOS中的相同文件:每次重新加载后的总内存使用量增加到1000mb(内存使用量:200->400->600->800->1000->1000->1000->1000)
vld和valngrind未检测到泄漏
如何在Linux中解决内存问题?这不是问题。Linux将您先前读取的文件保存在其缓存中,这样,如果您需要再次读取它们,就不需要访问HDD 该内存不会丢失,只要任何进程需要更多内存,它就会被释放
有关更多详细信息,请参阅superuser.com上的主题和类似主题。。调用malloc_trim()后内存返回操作系统
std::tr1::unordered_map< KeyOuter, std::tr1::unordered_map<KeyInner, Details*>* >
Key := std::string | int | long long
Details : struct { Fields } ( sizeof >=40 bytes )