On .NET 4.5 The maximum instantiatable length of a byte array is: 2147483591, or 56 less than int.MaxValue. Found via:
for (int i = int.MaxValue; i > 0; i--)
{
try
{
byte[] b = new byte[i];
Console.Out.WriteLine("MaxValue: " + i);
Environment.Exit(0);
}
catch (Exception ignored)
{}
}