Выделение более 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 МБ

Ответы на вопрос(6)

Ваш ответ на вопрос