博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于c++中map的内存占用问题
阅读量:7114 次
发布时间:2019-06-28

本文共 626 字,大约阅读时间需要 2 分钟。

     研究了下c++中map的内存占用情况。很多人说map中的erase以及clear不能释放内存,这几天实验了下,这个说法是不确切的,较为准确的说法应该是,map中的erase以及clear,不能,“马上”释放内存。map有自己的机制回收内存,用erase以及clear之后,如果没有特殊需求,可以认为那部分内存已经释放了。map不会马上释放删掉内容的内存,而是会对内存进行“预留”,如果确实很长时间用不到预留的内存,才会释放。

     做了这样几个实验,P1不停的填充map,监控程序内存占用情况。自然内存是不断上升的。P2则是向map中填充200M数据后,一个一个进行erase到0个,然后再重新填充。可以看到,填充过程内存连续增加,可是erase过程,内存没有连续减少。而是一段时间之后,忽然减少的2M左右。重新填充,内存再增加至之前的200M。P3的过程是,先向Map中填充200M数据,然后erase掉偶数index的数据(即删掉100M),然后再填充200M,如此往复。发现内存占用开始不断增加,到删除100M数据时,内存不变。第二轮填充开始,内存仍不变,直到填充100M以上后,内存开始继续增加。

    由以上实验可知,map有较为科学的内存回收机制。可以认为clear以及erase的空间,map会在合适的时间回收。

转载于:https://www.cnblogs.com/goodness/archive/2012/05/16/2503832.html

你可能感兴趣的文章
HotFrameLearning 热门框架学习(前言)
查看>>
git团队开发流程
查看>>
【Under-the-hood-ReactJS-Part6】React源码解读
查看>>
深入理解css之vertical-align
查看>>
Laravel事件
查看>>
matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线
查看>>
使用pipenv代替virtualenv管理python包
查看>>
Docker零基础入门指南(四):Docker容器使用
查看>>
React 深入系列4:组件的生命周期
查看>>
Mybatis之设计模式之迭代器模式
查看>>
房间号生成器
查看>>
CentOS 6.8 安装vsftpd
查看>>
js设计模式 --- 装饰设计模式
查看>>
Flask源代码阅读笔记(一)——应用启动
查看>>
IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏
查看>>
setState的一个Synthetic Event Warning
查看>>
通读Python官方文档之wsgiref(未完成)
查看>>
2017回顾
查看>>
Ubuntu 16.04 配置 Let's Encrypt 实现站点 SSL
查看>>
Maven3 快速入门
查看>>