Zuweisung von mehr als 1.000 MB Speicher im 32-Bit-.NET-Prozess

Frage ich mich, warum bin ich nicht in der Lage, die Zuweisung von mehr, dass 1.000 MB Speicher in meinem 32-bit .NET-Prozess. Die folgende mini-Anwendung löst eine OutOfMemoryException, nachdem er zugeordnet 1.000 MB. Warum 1000 MB, und nicht sagen, 1,8 GB? Gibt es eine Prozess-weiten-Einstellung, die ich ändern könnte?

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: Müll sammeln, hilft nicht.

Bearbeiten, um zu klären, was ich will: ich geschrieben habe eine server-Applikation, die sich mit sehr großen Mengen von Daten vor dem schreiben auf die Datenbank/Festplatte. Anstelle der Schaffung von temporären Dateien für alles, was, die ich geschrieben habe, eine in-memory-cache, das macht die ganze Sache super-schnell. Aber der Speicher ist begrenzt, und so habe ich versucht, herauszufinden, was die Grenzen sind. Und gewundert, warum meine kleine test-Programm warf die OutOfMemoryException nach genau 1.000 MB.

InformationsquelleAutor der Frage Stefan Schultze | 2009-07-10

Schreibe einen Kommentar