ArrayBuffers的最大长度是多少?

时间:2013-07-24 00:23:27

标签: javascript filereader arraybuffer

我在这里很困惑。 ArrayBuffer为它分配一个新的内存区域吗? 如果是这样,那么安装的最大Blob大小是什么?

5 个答案:

答案 0 :(得分:6)

这仅取决于您的系统,似乎没有限制。

根据the specification

  

如果请求的字节数无法分配异常   被提出来了。

答案 1 :(得分:4)

  

什么是安全的最大Blob大小?

似乎没有硬性限制,只是平台施加的任何限制。

但是,如果使用某种索引访问,索引不应大于Number.MAX_SAFE_INTEGER,否则会发生有趣的错误。

幸运的是,2 ^ 53-1个字节大约是8PB,所以除非你做的事情非常奇怪,否则不要担心。

答案 2 :(得分:1)

我也问自己同样的问题。似乎缓冲区受可用系统内存和底层JavaScript引擎GC处理大量内存的能力的限制。您可以通过在浏览器控制台中创建大缓冲区并在另一侧监视浏览器的进程和总体内存占用情况,轻松地为您的平台测试它。

我只是设法在Chrome 37上创建大于512MB的缓冲区。但是我有4GB的系统内存,因此在分配更多之后显然会导致崩溃。我对找到突破点并不感兴趣,因为我可以分配高达100MB的分配,但显然你可以自己测试它。

答案 3 :(得分:0)

这是最新的答案,至少根据Mozilla于2019年7月的说法:

  

Array或ArrayBuffer的length属性表示为   一个无符号的32位整数,该整数只能存储位于   范围从0到232-1。

(来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length

答案 4 :(得分:0)

Mozilla 倾向于增加 > 2Gb - select to_date(replace('2000/01/01', '/', '-')) as dt ; 。 默认情况下为 false,但在 Firefox 89 中应为 true