这段代码会产生内存泄漏吗?

时间:2015-09-24 11:42:42

标签: javascript node.js memory-leaks

看起来我在我的代码中发现了内存泄漏,但我不确定,而且我没有很多关于nodejs内存泄漏的经验。

有人可以解释一下,这段代码会产生内存泄漏吗?

    var tasks = [];

    // each 10 seconds
    tasks.push(function () { 
            console.log('hello, world!'); 
    });

    // each minute
    while (tasks.length) {
            var task = tasks.shift();
            task();
    }

UPD:错过了我的代码中的循环,现在更新。

我的问题是,我的匿名函数的范围是否会从内存中清除?

1 个答案:

答案 0 :(得分:3)

嗯,不是内存泄漏,而是你在阵列中放置新元素的速度比检索它们快6倍。 因此,您实际上只使用了5个推送功能中的一个,并且您的阵列将继续增长。 如果你让它运行得足够长,你将会得到一个永远不会被清空的庞大数组。

编辑:添加while循环后,阵列不再增长,并且不应该从代码的这一部分发生任何内存泄漏。这并不意味着您的项目中没有。确保在推送函数中创建的任何值都可以正确地进行垃圾收集(即,您没有在某处保留对它的引用)。