偶然看到一个新近的讨论还在说 node.js 只能 1.x GB 内存,是因为 v8 引擎的 GC 在大内存下有问题什么的,觉得不太可能。于是写了个小程序:
var test = new Array(1024);
for ( let i = 0; i < 1024; i++ ){
test[i] = new Array(1024);
for ( let j = 0; j < 1024; j++ ){
test[i][j] = new Array(1024);
for ( let k = 0; k < 1024; k++ ){
test[i][j][k] = i+j+k;
}
}
}
for (let l = 0; l < 1024; l++) {
console.log("[%d][%d][%d]=%d", l,l,l, test[l][l][l]);
}
在我的 MBP 上,这个需要 node --max-old-space-size=8574 t.js
才能跑起来。
顺便查了一下,早年确实有这个问题,不过 2011 年就已经修复了(https://bugs.chromium.org/p/v8/issues/detail?id=847)。TJ 自己就经常开个 15G 内存跑(https://twitter.com/tjholowaychuk/status/480753206301966336)。