当尝试使用未知迭代次数进行循环时,我注意到我的mac上的有线内存一直在增加。我有以下代码
var Iteration = function () {
this.counter = 0;
};
Iteration.prototype.go = function () {
global.gc();
var util = require('util');
console.log('%s, %s', ++this.counter, util.inspect(process.memoryUsage()));
var self = this;
var largeArray = new Array(1e4);
var l = largeArray.length;
for(var i = 0; i<l; i++) {
largeArray[i] = new Array(l);
for(var j = 0; j < l; j++) {
largeArray[i][j] = j+0.1;
}
}
var t = setTimeout(function () {
self.go();
t = null;
}, 10);
};
var iteration = new Iteration();
iteration.go();
当我在带有0.10.33节点的mac上使用--expose-gc标志运行它时,rss和堆足迹是稳定的。但是,我的系统监视器显示有线内存持续增加,直到我的mac崩溃(10.9.5)。目前我没有其他系统来测试它,所以我想知道是否有其他人看到过这种行为或者可以解释为什么会发生这种情况。
我在ubuntu虚拟盒上测试了相同的代码,似乎增加了有线内存没有问题。所以这个问题可以是mac相关的,也可以与mac的nodejs build相关。