ScriptProcessorNode内存泄漏

时间:2014-06-01 15:35:38

标签: memory-leaks web-audio

我正在开发一个大量依赖Web音频和ScriptProcessorNodes的项目。在最近的一些间歇性崩溃之后,我已经跟踪了从ScriptProcessorNodes泄漏内存的问题。我已经阅读了许多教程,指南,错误报告等等。但似乎没有任何帮助。这是一个小玩具示例:

http://jsfiddle.net/6YBWf/

var context = new webkitAudioContext();

function killNode(node)
{
    return function()
    {
        node.disconnect();
        node.onaudioprocess = null;
        node = null;
    }
}

function noise() 
{
    var node = context.createScriptProcessor(1024, 0, 1);
    node.onaudioprocess = function(e)
    {
        var output = e.outputBuffer.getChannelData(0);
        for(var i = 0; i < 1024; ++i)
        {
            output[i] = (Math.random() * 2 - 1) * 0.001;
        }
    }

    node.connect(context.destination);
    setTimeout(killNode(node), 100);
}


function generateNoise()
{
    for(var i = 0; i < 99999; ++i)
    {
        noise();   
    }
}

generateNoise();

这将启动许多节点,然后断开它们并将其onaudioprocess设置为null。从我读过的内容来看,鉴于我没有保留对它们的任何引用,它们不应该被垃圾收集吗?

我的计算机内存会上升到大约16%,稍后会降低到14%,但永远不会低于此水平。任何人都可以给我一个类似于这个节点得到正确收集的例子吗?有什么明显的东西我不见了吗?

1 个答案:

答案 0 :(得分:1)

这已被确认为Chrome中的回归:

https://code.google.com/p/chromium/issues/detail?id=379753