Javascript 中的最大数组大小是多少以及要使用哪些数组

eii*_*000 5 javascript node.js

我想在 Javascript 中创建一个大数组并编写了以下代码,但由于 OOM 而不起作用

let N = 125000000;
let numbers = [];
for (let i = 0; i < N; i++) {
    numbers[i] = Math.round(Math.random()*10000);
}
Run Code Online (Sandbox Code Playgroud)

然后我写了“让数字=新数组(N);” 相反,它适用于 N (125000000),但不适用于更大的 N (200000000)。然后我使用了 Uint32Array,它适用于更大的 N。它最多可达 N = 2^31-1。Javascript 中 []、new Array(size)、Uint32Array 的大小有限制吗?我猜 Uint32Array 的最大大小是 2^31-1。我还想知道为什么 new Array(N) 的限制比 [] 更高。谢谢

Nic*_*anc 2

NodeJS 遵循ECMAScript规范,通过V8引擎实现。

最多可以容纳 4,294,967,295 = 42.9 亿个元素。

由于 V8 设置了内存限制,您耗尽了内存,您可以通过使用“max-old-space-size”参数调用 Node 来绕过此限制,如下所示:

节点 --max-old-space-size=1024 yourscript.js

其中 1024 是 1GB,2048 是 2GB,依此类推。