【问题标题】:what is the max array size in Javascript and which arrays to use [duplicate]Javascript中的最大数组大小是多少以及要使用哪些数组[重复]
【发布时间】:2019-05-27 17:31:45
【问题描述】:

我想在 Javascript 中创建一个大数组并编写了以下代码,但由于 OOM 无法正常工作

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

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

【问题讨论】:

  • 我猜如果您将数字放入数组文字 ([]) 或数组对象 (new Array(size)) 中,它们将存储为 signed 64-bit Floating Point number - 64bits 并且如果您要输入数字进入UInt32Array,它们被存储为unsigned 32-bit int numbers - 32bits。因此,RAM 使用量是第一种情况的两倍。

标签: javascript node.js


【解决方案1】:

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

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

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

node --max-old-space-size=1024 yourscript.js

其中 1024 是 1GB,2048 是 2GB 等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2010-11-26
    • 2016-07-31
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多