By default, there is a 2 GB limit on the size of any single object.
By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). However, in the .NET Framework 4.5, you can increase this limit. For more information, see the element. 64-bit Applications
IF you enable gcAllowVeryLargeObjects you can go over 2 GB but still have the following limitation:
The maximum number of elements in an array is System.UInt32.MaxValue. <gcAllowVeryLargeObjects> Element
However gcAllowVeryLargeObjects will not solve the issue since you are using a byte array you are limited to 2 GB due to the number of elements.
Currently the only way to process a file larger than 2 GB, using a byte array, is to use some sort of buffered read where you process a portion of the file at a time until the entire file has been processed.