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?
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)