以下代码是从较大的代码库中提取和压缩的。它只是为了解决我的问题。
function testit(N) {
var result = [];
var row = [];
var field = '';
function flushField() {
row.push(field);
field = '';
}
function flushRow() {
result.push(row);
row = [];
}
for (var row_count=0; row_count<N; ++row_count) {
for (var field_count=0; field_count<10; ++field_count) {
field = row_count + ' ' + field_count;
flushField();
}
flushRow();
}
return result;
}
在语句row = [];
处导致N = 47000的内存不足。对于N = 46000,相同的代码不会导致内存不足。如果我计算数字,每行是10个元素“字段”的数组。每个字段都是一个少于10个字符的字符串。因此总体而言,47 000个行阵列中将包含少于4 700 0000个字符,其中包含470 000个字段数组。总的来说,我希望这会消耗一些兆字节。但是我的机器有几千兆字节。
为什么会导致内存不足?