【问题标题】:the max length of an array in javascript [duplicate]javascript中数组的最大长度[重复]
【发布时间】: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


【解决方案1】:

1 是一个整数,在内存中是 4 字节或 8 字节长(取决于您的操作系统),因此内存中不能有 4M * 这个长度的字节可用。

【讨论】:

  • 你真正的意思是4G?我想这就是原因。
猜你喜欢
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 2014-09-17
  • 1970-01-01
  • 2017-12-20
  • 2023-03-10
  • 2012-08-18
相关资源
最近更新 更多