手机内存爆掉啦!!内存只加不减~求指点!! 项目被这个卡了

嗯,需要手动排除

我这面测试跟上面的朋友说的一样。第一次加载没有释放,后面重复加载可以释放。

测试结论如上。

garbageCollect 并不一定能一次性回收所有垃圾,有可能在回收一次之后,一部分内存变成垃圾,然后下一次可以回收更多。

你可以做一个调用 garbageCollect 的按钮测试一下,如果没问题就没关系,因为 JS 本身会自己调用 GC 的。

多次回收测试结果。

貌似是xcode里的instrument工具

#我的creator版本是1.2.2,做了一个小游戏,打包xcode查看第一个场景就占用了50多MB,然后游戏场景占用了240MB多,很惊讶,

2赞

对于cocos来说,内存已经被搞成玄学了。你们都需要观看CCTV,走进科学栏目。

真棒,如果可以释放的再智能点就更好了

多次回收也是一样的结果…第一次的没有释放干净…请问这问题有后续处理吗?

同问,。。。。

同问…IOS下

1.4版本对这个话题有什么新的说法吗?

js中的对象被gc回收后,相应的native对象会释放 但是 js对象没有析构函数,这个机制是怎么办到的?

找到了 应该是 js_add_FinalizeHook

占个位···

需要手动排除的是指场景中使用了图片A,而手动加载的资源也使用了A,那么用cc.loader.getDependsRecursively + cc.loader.release释放资源的时候,需要手动排除A的释放么?

手动加载的资源需要cc.loader.getDependsRecursively + cc.loader.release来手动释放,即使切换场景也不能释放。
研究了下loadRes的代码,
如果在切换场景的时候想把手动加载的资源全部释放掉,是不是在切换前,把手动加载的资源 cc.loader.setAutoReleaseRecursively(uuid, true);就可以了呢

大家都用了
var deps = cc.loader.getDependsRecursively(‘prefabs/sample’);
cc.loader.release(deps);
这个方法了么,为什么我用了这个后,增加速度比没用时还多,而且没有降内存 。。。

需要手动排除texture 太麻烦 了,其实release的时候不要释放texture也没问题,通过removeUnusedSpriteFrames和removeUnusedTexture来移除 才是通用做法,应该是第一步removeUnsedResources 然后再removeUnusedSpriteFrames和 removeUnusedTexture 用户不应该管理说用到哪些texture都要记