stl的map为什么不释放stl vector 内存释放

stl的map为什么不释放内存_百度知道
stl的map为什么不释放内存
我有更好的答案
而被Hold了。当再次调用insert入map使用top窗口查看程序使用的内存。测试结果:free后,操作系统为程序分配的内存并不会free掉
采纳率:91%
来自团队:
为您推荐:
其他类似问题
stl的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。stl的map为什么不释放内存_百度知道
stl的map为什么不释放内存
free后使用top窗口查看程序使用的内存。
测试结果,操作系统为程序分配的内存并不会free掉,而被Hold了。当再次调用insert入map,会使用未free掉的内存
采纳率:96%
为您推荐:
其他类似问题
stl的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。160被浏览42,221分享邀请回答436 条评论分享收藏感谢收起2411 条评论分享收藏感谢收起cache file NOT exists!stl map的内存问题 - 为程序员服务
stl map的内存问题
又因为使用stl map建离线索引,而引发出内存问题。 问题如下:
在预处理模块中,使用了一些map存储大量的数据,总占用量达到3g。结束后,创建子进程进行索引构建,结果发现每个子进程初始都会出现大量内存占用情况:
开始以为是一些全局静态存储或者是内存泄露导致的问题,结果找了半天没找到,百思不得其解,最后定位到存储数据大的两个map:
std::map<std::string, std::size_t> PreBuildBookIndex::g_nameid_
std::map<std::size_t, std::size_t> PreBuildBookIndex::g_bookid_docid_
尽管过程结束后,会将这两个map clear掉,但这并不能保证内存回收,因为stl的内存分配器使用了内存池技术,该内存只能变大,但不能自动变小,进入池的内存可能不会交还给系统。
当fork子进程后,会复制父进程的一些资源,导致出现了大量内存占用的情况。但我观察到的12g used并不符合这个推测啊!具体原因等搞清楚后再贴上吧。
总结是stl不适合用于大数据量场景。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码}

我要回帖

更多关于 stl map 内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信