JavaScript没有为ArrayBuffer分配所需的大小

JavaScript没有为ArrayBuffer分配所需的大小,javascript,memory,arraybuffer,Javascript,Memory,Arraybuffer,我试图运行以下代码来分配ArrayBuffer: var data = new ArrayBuffer(336000000); console.log(data.byteLength); // outputs 125829120 有人知道为什么没有分配字节数吗?Chrome不会给我任何错误/警告 并非每个平台都存在此问题,但在Galaxy S6(Android浏览器)等平台上,您试图分配的内存超过可用内存。但是,根据规范,这会引发异常,而不是返回较小的缓冲区: 设db为新的数据块值,由大小字

我试图运行以下代码来分配ArrayBuffer:

var data = new ArrayBuffer(336000000);
console.log(data.byteLength); // outputs 125829120
有人知道为什么没有分配字节数吗?Chrome不会给我任何错误/警告


并非每个平台都存在此问题,但在Galaxy S6(Android浏览器)等平台上,您试图分配的内存超过可用内存。但是,根据规范,这会引发异常,而不是返回较小的缓冲区:

设db为新的数据块值,由大小字节组成。如果无法创建这样的数据块,则抛出RangeError异常

和以前的规格

如果无法分配请求的字节数,将引发异常


因此,如果您的浏览器返回的缓冲区较小,而不是引发异常,则不符合要求。

即336 MB。也许你只能访问125兆的内存?它输出的
336000000
对我来说很好。我把它放在Chrome上的控制台里。@NeilDocherty它不是依赖于可用的资源吗?我希望你能在一段时间内在电脑上使用更多的内存。@Kris,你的权利。我甚至没有注册他写的他在手机上。有趣的是,Firefox也这么做。不是这个数字,但如果我尝试分配3GB,它只会给我1GB。应该会出现异常而不是此异常。请查看中的兼容性阵列。我认为行中关于“新抛出”的问号是相关的。@Barmar我的理解是,这正是关于你应该使用
new ArrayBuffer(x)
而不仅仅是
ArrayBuffer(x)
,并质疑浏览器是否允许非
新的
版本或抛出异常,即与尺寸问题无关