- Creator 版本: 2.4.12
我的代码是加载bundle里面的所有资源,然后通关后,会releaseAll掉bundle里面的所有资源,但是经过测试,每次加载和释放后,内存会一直增长。最后发现是音频的问题。问了小秘书然后一直也没回复,我可以付费解决问题。
我的代码如下:
这是微信后台内存增长截图:
然后相同的代码 我用3.8版本的 内存似乎就不怎么增长了
这是3.8的截图:
这是我的demo工程,欢迎各位大佬指点一二。
NeiCunCeShi.rar (2.8 MB)
试试map clear的时候查clip计数,强制decRef
是因为 微信的 音频实例没有释放
那我这边要怎么去释放 微信的音频实例呢 
看我注释的代码里面,调用过decRef这个 还是不行
dec只会减一,建议加个日志看看是多少,是不是大于1
/**
-
解决音效资源释放问题。
-
(audioclip加载的时候创建了innerAudioContext并且赋值给this._audio,但是destroy的时候没有销毁innerAudioContext)
-
微信官方文档标注需要手动调用audioContext.destroy()
*/
var AudioClip = cc.AudioClip;
var OldDestroy = AudioClip.prototype.destroy;
Object.assign(AudioClip.prototype, {
destroy: function () {
// console.log(`audio clip release ${this.name}`);
OldDestroy.call(this);
this._audio && this._audio.destroy();
this._audio = null;
}
});
看了下cocos封装的好像还真没释放
强制回收GC再看看吧,wx.triggerGC();
同样的代码 我用3.8就没问题 真是奇怪
可以了,是我先把Map给clear了,导致没有手动调用destory
。太感谢了,方便加联系方式吗,可以给你发个红包。
还是有个小问题,如果我destory掉这个audioclip,我再次加载这个Bundle,就是播放不了了。
这个就要检测一下你二次加载的时候是不是加载管线出问题,导致没有正常加载到音频资源了。正常是不会有这个问题的。
第二次加载的时候,加载到音频资源了,但是log里面_auido 是 null了,应该是这个原因导致不能播放,我就是调用了audioclip.destory(),怎么检查时加载的管线问题呢?
你都删除完了, bundle都需要重新加载了 . bundle.get这个方式就不行了
这简单了 ,直接断点看







