soundjs通过创建许多WebAudioSoundInstance来发挥潜在的内存泄漏

时间:2017-07-10 08:05:37

标签: javascript google-chrome soundjs

如果我在Chrome中连续播放声音,那么无限增加WebAudioSoundInstance次数,因此内存消耗会增加。
如何避免它?

createjs.Sound.registerSound("audio/alarm.mp3", "alarm");

setInterval(function () {
 createjs.Sound.play("alarm");
}, 6500);

Screenshot of object instances

2 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。每次你播放声音它会创建一个webaudiosoundinstance,它也会返回它,你可以将它存储到一个变量中,如果变量存在且不是null,你可以调用play而不是调用全局函数...这将在这段时间内保持记忆稳定,不需要卸载和重新加载声音。

答案 1 :(得分:0)

现在我发现了这个肮脏的解决方法:

var i = 0;
createjs.Sound.registerSound("audio/alarm.mp3", "alarm");

setInterval(function () {
    if (i == 10) {
        createjs.Sound.removeSound("alarm");
        createjs.Sound.registerSound("audio/alarm.mp3", "alarm");
        i = 0;
    }
    createjs.Sound.play("alarm");
    i++;
}, 6500);