如何使用Web Audio API释放内存?

时间:2017-08-26 15:07:35

标签: html5 web-audio-api audiocontext audiobuffer

var context = new window.AudioContext()
var request = cc.loader.getXMLHttpRequest();
request.open("GET", 'res/raw-assets/resources/audio/bgm.mp3', true);
request.responseType = "arraybuffer";
request.onload = function () {
    context["decodeAudioData"](request.response, function(buffer){
        //success
        cc.log('success')
        window.buffer = buffer
        playBgm()
    }, function(){
        //error
    });
};
request.onerror = function(){
    //error
};
request.send();
function playBgm(){
    var audio = context["createBufferSource"]();
    audio.buffer = buffer;
    var _volume = context['createGain']();
    _volume['gain'].value = 1;
    _volume['connect'](context['destination']);
    audio["connect"](_volume);
    audio.start(0)
}

在我的代码中我加载了一个mp3文件并将其解码为AudioBuffer(window.buffer) 那我就成功了

但它耗费了大约100MB的内存 如何发布它们? 我试过这个

audio.stop()
audio = null
window.buffer = null
//context.close()
//context = null

chrome memory view

在chrome内存视图中

有时内存释放大约10秒

有时会在约1分钟内释放

有时似乎永远不会释放

我想知道我的代码是否是发布audiobuffer的正确方法?

我是否需要关闭AudioContext?

0 个答案:

没有答案