Javascript中的最大数组大小是多少?使用哪些数组
我不想用Javascript创建一个大数组,并编写了以下代码,但由于OOM的原因,它无法工作Javascript中的最大数组大小是多少?使用哪些数组,javascript,node.js,Javascript,Node.js,我不想用Javascript创建一个大数组,并编写了以下代码,但由于OOM的原因,它无法工作 let N = 125000000; let numbers = []; for (let i = 0; i < N; i++) { numbers[i] = Math.round(Math.random()*10000); } 设N=125000000; 让数字=[]; for(设i=0;i
let N = 125000000;
let numbers = [];
for (let i = 0; i < N; i++) {
numbers[i] = Math.round(Math.random()*10000);
}
设N=125000000;
让数字=[];
for(设i=0;i
然后我写了“let numbers=new Array(N);”,它适用于N(125000000),但不适用于较大的N(200000000)。然后我使用了uint32阵列,它适用于更大的N。它适用于N=2^31-1。
[]中的大小、新数组(大小)、Javascript中的UINT32数组是否有任何限制?我想UINT32阵列的最大尺寸是2^31-1。我还想知道为什么新数组(N)的限制高于[]。
谢谢NodeJS遵循通过引擎实现的规范
您最多可以容纳4294967295=42.9亿个元素
内存不足是因为V8设置了内存限制,您可以通过使用“max old space size”参数调用节点来绕过此限制,如下所示:
节点--最大旧空间大小=1024 yourscript.js
其中1024是1GB,2048是2GB,依此类推。我猜如果您将数字放入数组文字(
[]
)或数组对象(新数组(大小)
)它们存储为有符号64位浮点数-64位
,如果将数字放入uint32数组
,它们存储为无符号32位整数-32位
。因此,RAM的使用量是第一种情况的两倍。