Emacs has an inherent fixed limitation on the size of buffers. This limit is stricter than the maximum size of objects supported by other programs on the same architecture.
The maximum buffer size on 32-bit machines is 512 MBytes beginning
with version 23.2. If Emacs was built using the
--with-wide-int flag, the maximum buffer size on 32-bit
machines is 2 GB.
Emacs compiled on a 64-bit machine can handle much larger buffers; up
most-positive-fixnum (2.3 exabytes).
Due to things like decoding of multibyte characters, you can only visit files with a size that is roughly half the buffer size limit. When visiting compressed archives, the file size limit will be smaller than that due to decompression.