Мне интересно, почему я не могу выделить более 1000 МБ памяти в своем 32-битном .NET-процессе. Следующее мини-приложение выдает исключение OutOfMemoryException после выделения 1000 МБ. Почему 1000 МБ, а не 1,8 ГБ? Могу ли я изменить настройки процесса?
static void Main(string[] args)
{
ArrayList list = new ArrayList();
int i = 0;
while (true)
{
list.Add(new byte[1024 * 1024 * 10]); // 10 MB
i += 10;
Console.WriteLine(i);
}
}
PS: Сбор мусора не помогает.
Изменить, чтобы уточнить, что я хочу: Я написал серверное приложение, которое обрабатывает очень большие объемы данных перед записью в базу данных/диск. Вместо того, чтобы создавать временные файлы для всего, я написал кеш в памяти, что делает все очень быстрым. Но память ограничена, поэтому я попытался выяснить, каковы пределы. И задавался вопросом, почему моя небольшая тестовая программа выбросила OutOfMemoryException после 1000 МБ.