In .NET versions prior to .NET 4.5, the largest allocation for any single object is 2GB.
On 64-bit platforms, in .NET versions 4.5 and greater, it is possible to enable the allocation of arrays that are larger than 2 GB in total size (but NOTE this does not change other limits on object size or array size):
- The maximum number of elements in an array is UInt32MaxValue.
-
The maximum index in any single dimension is 2,147,483,591 (0x7FFFFFC7) for byte arrays and arrays of single-byte structures, and 2,146,435,071 (0X7FEFFFFF) for other types.
-
The maximum size for strings and other non-array objects is unchanged.
The default setting is not enabled.
You can enable this feature by using the gcAllowVeryLargeObjects element in your application configuration file:
<gcAllowVeryLargeObjects enabled="true" />
Before enabling this feature, ensure that your application does not include unsafe code that assumes that all arrays are smaller than 2 GB in size. For example, unsafe code that uses arrays as buffers might be susceptible to buffer overruns if it is written on the assumption that arrays will not exceed 2 GB.
Ref.