【发布时间】: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