如何防止javascript中的内存泄漏

pig*_*_Yu 6 memory garbage-collection node.js

我陷入js问题的内存泄漏.

使用Javascript:

var index = 0;
function leak() {
    console.log(index);
    index++;
    setTimeout(leak, 0);
}
leak();
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码,我使用instruments.app来检测它的内存使用情况,内存速度非常快.

我怀疑似乎没有变量占据记忆.

为什么?

任何想法都是欣赏的.

Vad*_*hev 10

您的代码创建了一组闭包.这可以防止释放内存.在您的示例中,内存将在所有超时完成后释放.

这可以看出(100秒后):

var index = 0;
var timeout;
function leak() {
    index++;
    timeout = setTimeout(leak, 0);
}

leak();

setTimeout(function() {
        clearTimeout(timeout);
}, 100000);

setInterval(function() {
        console.log(process.memoryUsage());
}, 2000);
Run Code Online (Sandbox Code Playgroud)