Do ArrayBuffers have a maximum length?

前端 未结 4 1061
失恋的感觉
失恋的感觉 2020-12-11 18:14

I little confused here. Do ArrayBuffer allocate a new memory region for it? If so, what would be the safe maximum Blob size to put on it?

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-11 19:15

    Here's an updated answer, at least according to Mozilla in July 2019:

    The length property of an Array or an ArrayBuffer is represented with an unsigned 32-bit integer, that can only store values which are in the range from 0 to (2^32)-1.

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

    More details as of 2020-01-09:

    Firefox seems to limit the size of the underlying buffer (so the limit is the number of bytes) whereas Chrome seems to limit the number of elements in a typed array. Also, Firefox's limit seems to be lower than what the mozilla link I posted says - according to the the link this

    new ArrayBuffer(Math.pow(2, 32) - 1)
    

    is a "valid case" but it throws a RangeError when run in the console (Firefox 72.0.1 64 bit on Windows 10)

提交回复
热议问题