Creator内存管理

我前段时间上传了一款用creator制作的ios游戏,在苹果后台看到有不少的崩溃计数统计,而我之前也有用2dx c++写过一款类似的游戏,同等使用次数下,creator版的崩溃次数竟然是c++版的370倍(当然,也不能完全排除说没有本身逻辑上的问题)。

随后我又拿xcode跑了一下Instruments,看到有不少内存泄露,而使用过程中内存也是只升不降。

我的项目概况:
1.用到了altas图集、音频、粒子和creator制作的animation、prefab等;
2.常用节点用了NodePool进行管理;
3.没有使用任何内存释放的方法。

所以,我的问题是:
Creator需要开发者进行内存管理吗?如果需要,那都有哪些管理的方法?

崩溃本地能重现吗?需要根据具体情况具体分析了

关于内存的建议:不再使用的对象如果只是设置 parent = null 是不足以删除它的,需要调用 destroy。

1赞

本地一直重现不了,可能是我们的机器太新,初步怀疑是部分低端机器内存不足导致崩溃。不过,崩溃的问题只是一个引子,我们会慢慢查的,我主要还是关心由此引申出来的问题:creator是否需要开发者主动进行内存管理?以及有哪些地方需要管理?

谢谢P大指点,还有几个问题就是:
1.使用loadScene切换场景的时候,前一个场景里面的对象是否需要手动释放?
2.挂在场景中或是Node上的粒子是否需要主动释放?
3.NodePool里面不再需要缓存的Node是否也是使用destory来进行销毁?
4.最后就是,请问还有其他地方需要注意的吗?

2赞

1.使用loadScene切换场景的时候,前一个场景里面的对象是否需要手动释放?

不需要,切换场景会自动 destroy 旧场景

2.挂在场景中或是Node上的粒子是否需要主动释放?

像我说的,可以通过 destroy 释放

3.NodePool里面不再需要缓存的Node是否也是使用destory来进行销毁?

4.最后就是,请问还有其他地方需要注意的吗?

这个可以邀请 @jare 来关注一下

动态加载的资源,需要手工通过 cc.loader.releaseXXX 等 API 进行卸载
当然,就算不卸载,内存也不应该无限增长下去。如果能找到可靠的方式重现无限增长的情况,麻烦把 demo 发给我们!

建议楼主用低端机去测试,很多问题就会凸现出来

##我的小游戏也遇到了内存暴涨的问题,运行一段时间后,Xcode上看到IOS内存占用320MB……小游戏呀!
##然后Instruments的结果和你的图类似,一段时间就有一个红点!而且第一个场景就有红点了(这个场景啥都没干)!
#想问下你解决了吗
我的版本是1.2.2版本。
###我做了个Demo,空包6MB,安卓上一段时间后,占用内存32MB!


Demo:
MaskDemo.zip (29.7 KB)

感觉目前是这样的说