除了cc.director.loadScene没有其他…有demo
2天了要沉了啊…
关于释放的细节参考文档
http://cocos.com/docs/creator/scripting/load-assets.html#--7
cc.sys.garbageCollect() 是强制 GC,任何时候使用都可以,只是 GC 的结果不同而已。至于内存到一定大小,确实会触发 GC,但是能回收多少内存是取决于你的游戏中有多少垃圾,任何可访问被引用的对象都不是垃圾。
我晚点会看一下你的项目是否像你说的一直涨到崩溃都不会掉
好的,请IOS真机测试一下demo,感谢老师.
@panda 老师,刚刚发现一个问题,原生环境场景跳转使用cc.sys.garbageCollect()导致崩溃.
在游戏逻辑场景里,player节点包含刚体,物理碰撞,spine动画.player节点死亡设置active=false;重生设置active=true;重生计时是在场景里组件里的update:fucntion计算时间,没用计时器Scheduler.
只要有player节点重生(有20个player,active=false后5秒做active=true,随机一下位置).当退出当前场景进入Loading过度场景cc.director.loadScene(“Loading”);时调用cc.sys.garbageCollect()会导致崩溃.而在Loading过度场景里加载cc.director.loadScene(NextScene);之后调用cc.sys.garbageCollect()不会导致崩溃.
原来代码是2个地方都有cc.sys.garbageCollect(),改为只在cc.director.loadScene(next);后调用不崩溃.
关于 GC 不够敏感的问题,我调整了一下引擎代码,你可以看一下,
重要的是:
JS_SetGCParameter(_cx, JSGC_MAX_MALLOC_BYTES, 1024 * 1024);
这里设置了 1MB,意思是每分配 1MB 的 JS Heap 内存就会主动 GC。这个设置可能需要根据游戏来调整。
关于你游戏中的崩溃问题,有没有办法给我一个 demo ?
对于资源少,全面使用对象池的项目,为了稳定性,我们倒希望永不GC.
嗨,不知道怎么私信你,可以帮我看看我发的这个帖子吗,不要意思,占用了楼主一层楼 我的帖子链接http://forum.cocos.com/t/js-apk/50443?u=atalidengyao
1.先手动调用cc.sys.garabCollect()了. 建议:在未来版本项目管理加入内存GC敏感设置项
2.游戏里崩溃.整理了一下测试DEMO:scenegc.zip (497.6 KB)
点击敌人节点到死亡动画播放,让多个节点进入重生阶段.然后点击back跳转场景.错误截图:
将SceneManager.js脚本里边 cc.director.loadScene(Global.SceneManager.loadScene);后边的cc.sys.garbageCollect();删除可以解决问题.但是我猜测是节点上的官方物理组件或者update在垃圾回收时有问题.
3.感谢@panda老师
感谢@panda老师,辛苦了. 我也写了一天代码眼睛都花了
请问一下这2个问题哪个版本上
1.6.2
好的,谢谢@panda老师i
@panda @jjyinkailejj 老师,今天通过预制体生成30+个player进行战斗,切换场景时候崩溃,之前的处理方法也不行.
有物理组件只要调用cc.sys.garbageCollect()就会崩溃.附上截图
请问这个问题是不是也是physics 的绑定实现的问题,已经修复了? 等1.6.2版本就可以了? 在线等.
给 demo 吧
先改其他项目…晚点给整理一个,感谢@panda老师
@panda不好意思,昨天鸽了…Sorry
点击杀死目标,会在5秒后重生.
尽量多的目标,进入重生阶段时候切换场景崩溃.
不理解你的意思,什么叫在重生阶段切换场景。。。
我尝试了一下,貌似无法重现崩溃,你能不能确认一下我之前的修改有没有正确合并进去