C # Großes Objekt in mittelgroßer Sammlung

9

Ich bin ziemlich neu im Speicherproblem. Ich hoffe, Sie denken nicht, dass das eine dumme Frage ist, die Sie stellen können.

Ich weiß, dass Speicher größer als 85.000 Bytes in C # in LOH gebracht werden würde d. h.

%Vor%

Ich frage mich, ob eine Sammlung mit der Größe 10000 - 20000 mit einem Objekt, das 10 Elementvariablen (Byte-Typ) enthält, in LOH oder SOH gelegt wird?

    
cscmh99 05.09.2015, 16:32
quelle

1 Antwort

4

Die Größe eines Arrays von Objekten ist die Anzahl der Objekte multipliziert mit der Zeigergröße. Dies liegt daran, dass nur Werttypen im Array selbst gespeichert werden, Referenztypen (Objekte) werden an anderer Stelle gespeichert und zählen nicht zur Größe des Arrays. So können 85000/4 = 21250 Objekte und 85000/8 = 10625 Objekte in einem Array auf dem SOH im 32-Bit- bzw. 64-Bit-Modus gespeichert werden.

Bearbeiten: Dank an Hans Passant für den Hinweis, dass dies davon ausgeht, dass der verwendete Sammlertyp ein Array und keine Liste ist. Listen ändern ihre Größe, um größer als der Inhalt zu sein, um zu viele Zuweisungen zu vermeiden. Einzelheiten hierzu finden Sie hier .     

Rasmus Damgaard Nielsen 05.09.2015, 16:44
quelle

Tags und Links