【发布时间】:2016-05-26 13:00:19
【问题描述】:
我在学习javascript时遇到了一个问题。这是我的代码:
var arr = [];
for (let i = 0; i <4294967296; i=i+1){
arr[i] = 1;}
但是在 chrome 和 firefox 中,结果都出现了问题。我知道 javascript 中数组的最大长度是 4294967295(2^32-1),当我将 4294967296 更改为 4294967295、4294967294 或一点点时更小了,还是不行。我也在Node.js中测试过,执行了一段时间后,结果如下:
FATAL ERROR: invalid array length Allocation failed - JavaScript heap out of memory
不知道为什么?
【问题讨论】:
-
正如错误所说,您的内存不足。
-
你的电脑没有足够的可寻址内存来分配。
-
理论最大值不一定与基于可用内存和 JavaScript 引擎本身的实际最大值相同。
-
您正在创建一个包含超过 40 亿个 8 字节数字的数组。至少,这将消耗 32 GB 的内存。
标签: javascript