内存释放问题,依旧是一个头疼问题

最近在研究Creator内存释放问题,反复查看官方文档,其实对于内存释放的模块说的也感觉比较模糊!
依照官方文档里的cc.loader.release 来释放资源,感觉效果上不是那么显著有效,而且还存在延时释放问题,通过运行一些官方例子,其实这些问题一直存在;无法游戏有效控制内存!

以下是官方例子


进行反复点击LoadAll ClearAl运行的内存走势图:

箭头标记的问题为初始首次点开内存的点;但是反复点击几次并且例子代码中也进行了cc.loader.release 但是可以看到后续内存走势一直持续增高

通过控制台可以看到不断再进行GC,但是其实内存走势图上并没有显示的内存下降;

虽说可以理解JS GC延迟,有些在js层进行释放引用,但是JS的对象内存引用并没有被及时释放掉,需要到JS GC完后才会释放:

那再看下图,是不进行操作并且释放加载的资源,持续几分钟后的情况:


可以看到,内存稳定了,但是呢 并没有明显的释放下降,那之前不断产生并且没有真正释放的内存是不是还存在,且无法再次被释放呢;
对于这种野内存的存在希望官方能解释一下;
也希望社区各位大佬能一些建议!!
不然,那是这样的情况,有release的接口又有何意义呢!!!
@panda @jare

3赞

我刚刚想发帖的·····
遇见同样的问题
我的需求是,列表里显示下载的图片,节点销毁(或放入对象池)后,cc.loader.release(url)释放加载的图片资源,通过查看log,该释放的都释放了,cc.loader._cache中也很稳定,不会增加什么,但是内存就是会一直增长(只有5%的情况,内存会不变)
求解惑·················

creator版本是多少?这边做下测试分析,在反馈给你们。

当我调用gc的时候,内存倒是倒是很稳定,可如果每次释放资源都调用一次gc,会不会········

Cocos Creator v2.0.1版本!!

对啊,也有尝试手动GC,但是这种太粗暴了,不太好采取啊!!

我这边测试了,内存是被释放了!在IOS下,JS虚拟机的内存回收并不是很灵敏,但是内存最终会被回收的,这个不是我们引擎可以控制的。

能否提供测试demo,或者测试的内存走势,看一下嘛!
毕竟我帖子上的,也是用官方的Demo啊!!

1赞

恳请提供一下您测试的demo看一下!!万分感谢

可以的,正在做一个内存测试的demo,处理完,会在帖子上回复,请耐心等待。

请问,内存占用情况,除了在IOS的XCode中查看内存占用曲线,有其他更方便的方式吗?而且要准确的。

xcode里面跟以前lua项目对比 明显不对

有这么个需求 就是想在app中嵌入ccc的游戏.退出游戏后返回到app的vc中。这时候有没有办法能释放掉游戏所产生的内存.

是不是遇到啥问题了 demo这么久没出来

UILoader 可以为你解决这个问题 https://github.com/1083921307/UILoader

没用的····

我又来了,在小米note3上测试


左上角是cc.loader._cache的个数,维持不变。左下角的数据也基本不变。需求是滚动列表,会更换封面,大概400多个封面。采用了内存池,下过过的封面不用的话也会从内存中释放,不然左上角的数量也不可能是稳定不变的吧。
然而内存,从最开始的100M,到最后的230M···············

我还在代码里加了gc,每隔10秒一次·····

我不知道是哪还有内存泄漏么? 求指点啊·············

2赞

在ios上,目前版本是存在字体泄漏的,已经提了issue,正在修复。

大大,我的问题就这么被忽略了啊
好扎心 ➳:heart:

你给我个demo,我看下哪里内存泄漏了