Wie viel Speicher belegt eine C # -Referenz? [Duplikat]

7

Wie viel Speicher verbraucht eine C # -Referenz? Nutzt Referenzen so viel Speicher wie das Objekt selbst?

    
Louie Almeda 26.10.2013, 11:59
quelle

3 Antworten

15

Eine Referenz wird als Zeiger implementiert. In einer Anwendung, die im x86-Modus (32 Bit) ausgeführt wird, ist eine Referenz vier Byte lang, und im x64-Modus (64 Bit) ist eine Referenz acht Byte.

Da die Referenz nur ein Zeiger auf ein Objekt ist, hat die Referenz die gleiche Größe, unabhängig davon, auf was sie zeigt, oder sogar, wenn sie überhaupt nicht auf etwas zeigt (null).

    
Guffa 26.10.2013, 12:02
quelle
11

Eine Referenz verwendet die native Wortgröße der Plattform, auf der sie ausgeführt wird.

Das heißt 32-Bit: 32 Bits. 64-Bit: 64 Bit.

Also nein .. Ihr Objekt kann in der Größe variabel sein. Die Referenz wird immer wie oben sein.

    
Simon Whitehead 26.10.2013 12:02
quelle
3

Aus C # 5.0 in Kürze: Die endgültige Referenz auf Seite 22;

  

Referenztypen erfordern separate Speicherzuordnungen für   Referenz und Objekt. Das Objekt verbraucht so viele Bytes wie seine Felder.   plus zusätzlicher Verwaltungsaufwand. Der genaue Overhead ist   intrinsisch privat zur Implementierung der .NET-Laufzeit, aber   mindestens der Overhead ist acht Bytes, verwendet, um einen Schlüssel zu speichern   Objekttyp sowie temporäre Informationen wie den Sperrstatus   für Multithreading und ein Flag, um anzuzeigen, ob es behoben wurde   aus Bewegung durch den Müllsammler. Jeder Verweis auf ein Objekt   erfordert zusätzliche vier oder acht Byte, je nachdem, ob .NET   Laufzeit läuft auf einer 32- oder 64-Bit-Plattform.

    
Soner Gönül 26.10.2013 12:07
quelle

Tags und Links