Asignar más de 1,000 MB de memoria en un proceso .NET de 32 bits

Me pregunto por qué no puedo asignar más de 1,000 MB de memoria en mi proceso de .NET de 32 bits. La siguiente mini aplicación lanza una excepción OutOfMemoryException después de haber asignado 1,000 MB. ¿Por qué 1,000 MB, y no decir 1,8 GB? ¿Hay algún ajuste en el proceso que pueda cambiar?

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);
    }
}

PD: la recolección de basura no ayuda.

Editar, para aclarar lo que quiero: He escrito una aplicación de servidor que trata con grandes cantidades de datos antes de escribir en la base de datos / disco. En lugar de crear archivos temporales para todo, he escrito un caché en memoria, lo que hace que todo sea súper rápido. Pero la memoria es limitada, así que traté de averiguar cuáles son los límites. Y me pregunté por qué mi pequeño programa de prueba lanzó la excepción OutOfMemoryException después de exactamente 1,000 MB.

Respuestas a la pregunta(6)

Su respuesta a la pregunta