cocos2dx 3.2 内存管理
一、引用计数(cocos2d-x3.2的Node类中用到)
概念:记录当前对象被引用的次数。当次数为0时释放。
1 . retain 与 release
每调用一次retain()使计数+1
每调用一次release()使计数-1
addchild 引用一次使计数+1
另:通常在C++中,有
1) 堆:通过new 和delete创建和释放
2) 栈:自动释放
3)全局变量:程序运行时一直存在,直到程序结束
二、静态构造函数create
用如下方法创建场景:
class LoadingLayer : public Layer
{
public:
static Scene* createScene();
LoadingLayer();
~LoadingLayer();
CREATE_FUNC(LoadingLayer);
private:
MenuItemSprite* m_controlItem;
};
auto scene = LoadingLayer::createScene();//创建这个场景、
三、垃圾回收机制(部分来自http://www.cnblogs.com/tangyikejun/p/4361638.html)
Ref类: 进行引用计数、提供加入自动释放池的接口。
AutoreleasePool 类: 管理一个 vector 数组来存放加入自动释放池的对象。提供对释放池的清空操作。
PoolManager 类: 管理一个 vector 数组来存放自动释放池。默认情况下引擎只创建一个自动释放池,因此这个类是提供给开发者使用的,例如出于性能考虑添
加自己的自动释放池。
另外,在每一帧结束后,会调用clear()函数对PoolManager 类里的那个vector遍历释放。
先粗略的记到这里,以后更详细的参考http://www.cnblogs.com/tangyikejun/p/4361638.html
四、Thanks ~
cocos2dx 3.2 内存管理的更多相关文章
- Cocos2d-x 3.1 内存管理机制
Cocos2d-x使用的内存管理方式是引用计数.引用计数是一种非常有效的机制.通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数.当对象添加一次引用时,计数器加1:而对象失去一次引用时.计数 ...
- cocos2dx中的内存管理机制及引用计数
1.内存管理的两大策略: 谁申请,谁释放原则(类似于,谁污染了内存,最后由谁来清理内存)--------->适用于过程性函数 引用计数原则(创建时,引用数为1,每引用一次,计数加1,调用结束时, ...
- 菜鸟学习Cocos2d-x 3.x——内存管理
菜鸟学习Cocos2d-x 3.x——内存管理 2014-12-10 分类:Cocos2d-x / 游戏开发 阅读(394) 评论(6) 亘古不变的东西 到现在,内存已经非常便宜,但是也不是可以 ...
- cocos2dx中的内存管理方式
转载:http://www.cocoachina.com/bbs/read.php?tid=195219 今天看了一下cocos2dx的内存管理机制,有些地方不太好理解搞了挺长的时间,现在感觉自己理解 ...
- cocos2d-x 3.0 内存管理机制
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- 【转】cocos2d-x与ios内存管理分析(在游戏中减少内存压力)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=281 注:自己以前也写过coco ...
- cocos2d-x与ios内存管理分析(在游戏中减少内存压力)
转自:http://www.cocos2dev.com/?p=281 注:自己以前也写过cocos2d-x如何优化内存的使用,以及内存不足的情况下怎么处理游戏.今天在微博中看到有朋友介绍了下内存,挺详 ...
- cocos2d-x与ISO内存管理(转)
一,IOS与图片内存 在IOS上,图片会被自动缩放到2的N次方大小.比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的.图片占用内存大小的计算的公式是:长*宽*4.这样 ...
- cocos2d-x之初试内存管理机制
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...
随机推荐
- 把windows下的压缩包放到Linux目录下去
今天在自学redis时出现了问题,因为楼主linux也是空白纸,前几天安装了Linux后就只会基本的命令,其他的一概不通啊,所以当redis要在Linux中用时就傻眼了,索性就在windows中下载了 ...
- python串口工具的使用!!!!一定要加timeout=!!!!
不指定timeout参数的话,就各种报错,如下: 而前面的串口,波特率则不需要指明.
- 记一次Mysql数据库Kill完之后启动不起来的解决方案
在Mysql运行的时候,有时候会stop不了,这时候我们就会想直接把他的进程kill掉. 但是,有时候kill完了之后,在去start它就会直接抛异常了... ERROR! The server qu ...
- Disruptor原理探讨
之前谈到了在我的项目里用到了Disruptor,因为对它了解不足的原因,才会引发之前的问题,因此,今天特意来探讨其原理. 为什么采用Disruptor 先介绍一下我的这个服务.这个服务主要是作为游戏服 ...
- Day 11 文件的权限
1.什么是权限? 我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力.* 2. ...
- C++基础之动态内存
C++支持动态分配对象,它的生命周期与它们在哪里创建无关,只有当显示的被释放时,这些对象才会被销毁.分配在静态或栈内存中的对象由编译器自动创建和销毁. new在动态内存中为对象分配空间并返回一个指向该 ...
- JavaScript之时间对象Date
时间是物理学七大常量之一.生活中记录时间有两种方式(或者说有两种计时系统):GMT(格林尼治时间)和UTC(协调世界时间). 一 创建Date对象 JS中的Date对象只能通过new关键字创建. va ...
- 使用git在github远程仓库中操作
在github上创建一个仓库,这一步参考廖雪峰老师的git教程,以及其他的一些准备工作略,我只记录几个重要的命令. 从其他github地址克隆项目 $ git clone git@github.com ...
- 使用Spreadsheet导出表格时,设置样式
$spreadsheet = new Spreadsheet();// 初始化 $spreadsheet->createSheet();// 添加一个sheet ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 279: illegal multibyte sequence
with open(r'E:\yy\mysql.txt') as wk: print(wk.readlines()) Traceback (most recent call last): File & ...