Cocos2d-x 3.x:如何进行合理的内存分配(使用AutoreleasePool 来合理的管理内存)
2015-06-08 07:01
531 查看
Cocos2d-x 3.x:如何进行合理的内存分配(使用AutoreleasePool 来合理的管理内存)
本文转载至深入理解Cocos2d-x 3.x:如何进行合理的内存分配设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下:
答案是当然不会,但是这样会造成一帧内的内存峰值过高,因为在引擎的自动内存管理中,所有的释放内存操作都是在每一帧的结束才会进行的,所以就算申请的内存在这一帧中不会有其他地方会使用,它的内存也不会随着作用域的结束而释放的。
那么我们应该如何优化这段代码呢?如下
那么最终要通过什么途径让函数在函数结束的时候自动释放内存呢?我们知道,作用域结束的时候,会调用普通对象的析构函数,那么就来看看AutoreleasePool 的析构函数执行了什么吧
上述就是通过使用AutoreleasePool 来合理的管理内存了。
相关文章推荐
- Cocos2d-x 3.2 智能指针
- Cocos2d-x 3.2:UI树
- Cocos2d-x的学习之旅(四)坐标系
- cocos2D-x 3.5 引擎解析之--节点(Node)
- cocos2d-x 贝塞尔曲线的简单运用(CCBezierTo,CCBezierBy)
- 解决cocos2d-x-3.1.1新androidproject
- cocos2d-x-3.6 引擎基础概念
- cocos2d-x改底层之动态改变UIListView中的某项在链表中的位置
- cocos2d-x改底层之获取UIListView的实际内容大小
- cocos2d触摸事件处理机制(2.x和3.x变化)
- cocos2dx-js 集成google play service和admob--------错误处理
- Cocos2d-x坐标系介绍
- cocos2dx 3.2 + vs2012 + win7 工具栏<本地Windows调试器>不见了
- Cocos2d-x 输出中文和版权符号的方法
- Cocos 随写
- 【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记
- 我的Cocos2d-x学习笔记(二十三)数据持久化之CCUserDefault
- cocos2d开发学习五:精灵节点CCSpriteBatchNode的渲染和纹理集Texture Atlases内存优化
- 我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件)
- Cocos2d-x粒子系统