测试引擎版本: 1.4.0
//加载音频语句
cc.loader.load("res/raw-assets/resources/sound/effect/xxx.mp3”)
//卸载音频语句
cc.loader.release("res/raw-assets/resources/sound/effect/xxx.mp3”)
其中cc.loader._cache截图比对


内存情况就不上图了。
初始内存为:31M左右。
加载后内存为:85M左右。
卸载后内存为:85M左右。
测试引擎版本: 1.4.0
//加载音频语句
cc.loader.load("res/raw-assets/resources/sound/effect/xxx.mp3”)
//卸载音频语句
cc.loader.release("res/raw-assets/resources/sound/effect/xxx.mp3”)
其中cc.loader._cache截图比对


内存情况就不上图了。
初始内存为:31M左右。
加载后内存为:85M左右。
卸载后内存为:85M左右。
人工置顶~
我继续顶
我继续顶~
cc.audioEngine.uncacheAll()
这个方法也没用内存还是居高不下。
如果加载到几百兆也还是这个表现么?
有可能是没触发到 GC 的阀值。你试试 texture release 应该也是一样的状况。
GC 不是实时的,要到一定的条件浏览器才会回收。
引擎里面是把自身的引用全删除,保证下次 gc 会被回收。。。我刚刚看了下逻辑,应该是删干净了的多放几个音频试试
手机H5端测试:
相同的4个音频, 频繁的 load 和 release 掉音频文件,
峰值达到500M左右 chrome 浏览器直接闪退
手机型号:红米4X
在手机同楼上操作,到达800多M 页面崩溃。adb内存变化情况就不好截图了,如果需要可以发你QQ, 希望你们也测测 证实这个问题, 辛苦了~
额,sorry哇,辛苦嘞,谢谢百忙之中帮忙确认问题。
照这个表现确实是 bug,稍后测试一下,看看是啥问题。
谢谢反馈哇。
https://github.com/cocos-creator/engine/pull/1928
经过检查,这里有一个操作导致了 load 过程中应该被销毁的数据遗留在了缓存内。
感谢 @841669886
还有另一原因:
调试工具 eruda 和浏览器会自动缓存 http 以及 audio buffer,并且要驻留一段时间才能够进行回收。这个也会造成内存暴涨,不过不使用大概几分钟就就会恢复到正常的内存水平。
如果是 eruda 引用的,在发布后就正常了,而系统的就只能避免在较短的时间内大量操作音频的加载与释放。
有因就有果,大兄弟,你这个PR合并到1.6以上的版本后
我项目升级到1.6.1之后,load的callback会有漏掉不走的情况,导致我项目的loading界面卡住。
把你这段PR回溯到1.5.1的版本,又没有问题了 。
不知道具体是啥原因。 你有空可以查查
避免内存泄露之后又出了新的问题,我不确定是不是你修改的部分出了问题,不过我回溯之后测了一个多小时没有复现load卡住的情况
卡住代码:loading-items.js文件,箭头所指item为null,导致未走到下面的回调。