关于c++中map的内存占用问题
来源:互联网 发布:oracle数据库日志管理 编辑:程序博客网 时间:2024/04/30 00:20
资料出处:http://www.cnblogs.com/goodness/archive/2012/05/16/2503832.html
研究了下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会在合适的时间回收。
- 关于c++中map的内存占用问题
- 关于c++中map的内存占用问题
- 关于占用过多内存的问题
- 关于MSSQL占用过多内存的问题
- 关于MSSQL占用过多内存的问题
- 项目中Map端内存占用的分析
- 关于Open Flash Chat占用内存释放的问题
- 关于SQL server 2008占用内存的一个问题
- stl map 占用内存的测试
- 关于C语言中数据结构的内存对齐问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- GLib中GThread Pool内存占用的问题
- GLib中GThread Pool内存占用的问题
- J2ME 内存占用的问题
- Lua与C/C++的交互6:Lua调用C/C++函数
- 全世界好老男人的女人都该去看“边境风云”(剧透慎入)
- C#实现在线程中打开新窗体
- 我们要完成哪些“软件”的更新——决定人生成败的12种素质
- Java批量生成html静态页面(高手勿喷)
- 关于c++中map的内存占用问题
- RandomAccessFile的使用
- 进程间通信之共享内存
- [源码、文档、分享] 第一弹:iOS入门,提升案例大全(直接可运行,附截图)。
- listview复杂显示
- 华为高端路
- setProjectionMap(sContactsProjectMap)
- 修改eclipse的背景色
- 新手配置vim