cc.sys.garbageCollect()的正确使用姿势到底是啥啊?

1.不使用cc.sys.garbageCollect(),每个场景都勾选了自动释放资源和延迟加载资源: ipad内存不会释放,频繁来回切换场景后,内存爆掉被系统杀进程。

2.每个场景的onDestroy都加cc.sys.garbageCollect() , 切换场景时android手机会概率性崩

3.每个场景的onLoad都加cc.sys.garbageCollect() ,切换场景时ipad会概率性崩(android没试)

4.只给其中一个scene的onLoad加上cc.sys.garbageCollect() ,ipad/android崩崩崩

:confused::confused::confused::confused:黑人问号?到底怎么弄啊?

兄弟你挖坟了好多帖子 :joy:

要知道的是 gc 导致的崩溃可能每个人情况都不同,需要针对你遇到的具体崩溃情况来分析,这个可能需要测试用例。另外,你的正确问题应该是如何管理资源,这篇文档里面覆盖了一些重要的信息,麻烦仔细阅读

http://cocos.com/docs/creator/scripting/load-assets.html#--7

gc 只会回收真正的垃圾,所以如果你自己不小心引用了你想要释放的资源,也是无法被 gc 的。

具体到你说的崩溃问题,能否提供一个用例,或者至少提供一下崩溃调用栈等信息?当然,也建议你尝试一下 1.6 测试版本,1.6 对绑定层的内存控制做了不小的改造,现在的状态比之前的版本要安全很多,可能你的崩溃问题就迎刃而解了

正确的姿势应该是在场景或界面加载完后的1-3秒后执行,不然可能造成的是,正在处理的显示对象要引用到的图片被释放 ,然后引起闪退
然后每加载一个新的界面,要判断下是否存在需要延时释放资源的timeoutId,如果存在要先clearTimeout,再重新设置setTimeout

释放资源
cc.director.purgeCachedData();//在cocos2dx里是包含了cc.spriteFrameCache,cc.textureCache的清除,但在creator中好像只有cc.textureCached的清除
//然后还有一个cc.animationCached.removeAnimation这个是针对cc.Animation对象的释放,需要自己记录哪些需要释放,这个在creator中不知道需不需要用到

//最后调用
cc.sys.garbageCollect()

:joy: 是啊,遇到问题先搜一遍论坛。用例暂时给不了,工程东西太多了,已经是商用版本了,等1.6正式版发布了我转过去试试,到时候上来分享结果

:joy:好的,谢谢啊!我抽时间试试!