Я хотел бы создать два массива элементов 200M int. Как что:Что такое ограничение размера массива в C#?
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Arr
{
class Program
{
static void Main(string[] args)
{
int Min = 0;
int Max = 10;
int ArrSize = 200000000;
int[] test2 = new int[ArrSize];
int[] test3 = new int[ArrSize];
Console.ReadKey();
}
}
}
Однако под VS2013, я получаю из исключения памяти с желтой стрелкой, указывающей на int[] test3 = new int[ArrSize];
линии. Аппарат имеет 12 ГБ оперативной памяти.
Если я уменьшу количество элементов до 150 М, исключение исключений не будет.
Если я инициализирую только один массив размером 200 М, исключение не будет выбрано.
Почему?
Нет, этот вопрос не имеет ответа по указанной вами ссылке. 200M ints составляет 800 МБ. Почему этот размер подходит для первого объекта, но не для второго? – user1146081
Этот вопрос определенно не о размере одного объекта, а об общем размере нескольких объектов. Возобновлено. –
@PetSerAl - очевидно 32bit. x64 не удастся с единичным распределением около 500M, 32-разрядный сбой при попытке найти 2 непрерывных блока 800Mb (что смехотворно сложно), обычно нормально. –