Выделение более 1000 МБ памяти в 32-разрядном процессе .NET
Мне интересно, почему я не могу выделить более 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: сбор мусора не помогает.
Edit, to clarify what I want: Я написал серверное приложение, которое обрабатывает очень большие объемы данных перед записью в базу данных / диск. Вместо того, чтобы создавать временные файлы для всего, я написал кэш в памяти, который делает все это очень быстрым. Но память ограничена, и поэтому я попытался выяснить, каковы ограничения. И удивился, почему моя маленькая тестовая программа вызвала OutOfMemoryException после ровно 1000 МБ