Каждый double
составляет 8 байтов, поэтому вы пытаетесь выделить один массив размером чуть более 5 ГБ.CLR имеет ограничение на объект около 2 ГБ IIRC, даже для 64-разрядного CLR.Другими словами, проблема заключается не в общем объеме доступной памяти (хотя, очевидно, у вас будут проблемы, если у вас нет достаточно памяти), а в размере каждого объекта.
Я предлагаю вам разбить его на более мелкие массивы, возможно, за фасадом какого-то описания.Я не верю, что есть какой-то способ обойти это ограничение для одного массива.
РЕДАКТИРОВАТЬ: Вы могли бы перейти на массив массивов - так называемый зубчатый массив :
double[][] array = new double[12000][];
for (int i = 0; i < array.Length; i++)
{
array[i] = new double[55000];
}
Это было бы приемлемо для вас?
(Вы не можете использовать прямоугольный массив (double[,]
), так как у него будет та же проблема размера объекта).