我已經寫一個小程序,產生陣列,它運行相當長的(幾乎永遠;-)):代替空數組內存消耗
var results = [];
var i = 1;
while (true) {
console.log(i++);
results.push([]);
}
當,我創建長度爲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帶我回到控制檯。由於唯一的區別是第二個產生比第一個更大的空數組,所以這意味着長度爲n
的空稀疏數組佔用空數組的長度爲1
的空間的n
倍。
我是對的嗎(具體到Node.js)?
一個問題:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
Abort trap: 6
爲什麼會出現這種行爲比其他兩個選項是不同的:如果我運行
var results = [];
var i = 1;
while (true) {
console.log(i);
var temp = [];
temp[i++] = i;
results.push(temp);
}
然後我起牀到1286175,然後再次崩潰?
PS:我使用Node.js的0.12.0到在OS X上運行此
我無法看到稀疏陣列。您可能想要移除該標籤。 – monocell
我已更新我的問題。 –