Großes Array C # OutOfMemoryException

7

Für meine Programmierübung in C # versuche ich eine Reihe von langen, mit einer Länge von 0x1fffffff (536,870,911 in base10), aber ich habe System.OutOfMEmoryException.

Für den Build habe ich das x64-System als Ziel gewählt, und ich verwende VisualStudio2008 unter Windows7 x64 mit 8 GB RAM. Es sollte genug Speicher für das Array (es funktioniert auf JDK x64 und CPP-Projekt)

Irgendwelche Gedanken?

%Vor%     
portoalet 26.04.2011, 14:30
quelle

3 Antworten

25

Die CLR unterstützt kein einzelnes Objekt mit einer Größe von mehr als etwa 2 GB. Sie fragen nach einem Array von 4.294.967.288 Bytes - doppelt so viel wie möglich.

Sie können so viel Speicher verwenden, aber nicht in einem einzelnen Objekt (z. B. einem Array).

    
Jon Skeet 26.04.2011, 14:33
quelle
5

Es ist schwer, irgendeine sinnvolle Alternative zu empfehlen, da Sie nicht angeben, was Sie erreichen wollen, was Sie nicht tun können.

Wenn Sie wirklich etwas benötigen, das eine schnelle zusammenhängende Ansicht in einen flachen Adressraum von mehr als 2 GB Größe ist, könnten Sie MemoryMappedFile .

Es würde helfen, wenn Sie angeben würden, was in diesen Speicherblock gehen soll, warum der Adressraum selbst zusammenhängend sein muss (übergeben Sie einen Zeiger darauf zB an nicht verwalteten Code) und warum es eine flache Adressierung benötigt.

    
ShuggyCoUk 26.04.2011 17:27
quelle
0

Machen Sie eine Teilmenge von Array und füllen Sie dann das Array

yourary []

masterarray [] & lt; ------ Fülle youraray [] bis zu 2 GB Puffer und füge es dann in das Masterarray ein

    
ShahnawazHamid 22.05.2014 04:29
quelle

Tags und Links