我发现了一些关于人们遇到类似问题的参考资料,但答案总是如此,请确保在完成后调用 window.close()。但是,这似乎对我不起作用(节点 0.8.14 和 jsdom 0.3.1)
一个简单的复制
var util = require('util');
var jsdom=require('jsdom');
function doOne() {
var htmlDoc = '<html><head></head><body id="' + i + '"></body></html>';
jsdom.env(htmlDoc, null, null, function(errors, window) {
window.close();
});
}
for (var i=1;i< 100000;i++ ) {
doOne();
if(i % 500 == 0) {
console.log(i + ":" + util.inspect(process.memoryUsage()));
}
}
console.log ("done");
我得到的输出是
500:{ rss: 108847104, heapTotal: 115979520, heapUsed: 102696768 }
1000:{ rss: 198250496, heapTotal: 194394624, heapUsed: 190892120 }
1500:{ rss: 267304960, heapTotal: 254246912, heapUsed: 223847712 }
...
11000:{ rss: 1565204480, heapTotal: 1593723904, heapUsed: 1466889432 }
在这一点上,风扇变得疯狂,测试实际上停止了……或者至少开始变得非常缓慢
除了 window.close 之外,还有没有人有任何其他提示来摆脱内存泄漏(或者它确实看起来像内存泄漏)
谢谢!
彼得