配列を生成する小さなプログラムを作成しましたが、これは非常に長く実行されます (ほぼ永久に ;-)):
var results = [];
var i = 1;
while (true) {
console.log(i++);
results.push([]);
}
空の配列の代わりに length のスパース配列を作成するi
と、プログラムが非常に速くクラッシュします。
var results = [];
var i = 1;
while (true) {
console.log(i);
results.push(new Array(i++));
}
実際にはi
17424 に等しくなり、エラー メッセージが表示されます。
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
Abort trap: 6
Node.js によってコンソールに戻ります。唯一の違いは、2 番目のものは最初のものよりも「大きい」空の配列を生成することであるため、これは、長さの空のスパース配列が lengthの空の配列のスペースの倍n
を占めることを意味します。n
1
私はこれについて正しいですか (特に Node.js に対して)?
もう 1 つの質問: 実行した場合
var results = [];
var i = 1;
while (true) {
console.log(i);
var temp = [];
temp[i++] = i;
results.push(temp);
}
その後、1286175 になり、次のように再びクラッシュします。
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
Abort trap: 6
これが他の 2 つのオプションと異なる動作をするのはなぜですか?
PS: Node.js 0.12.0 を使用して、これを OS X で実行しています。