Wie viel Speicher verbraucht eine C # -Referenz? Nutzt Referenzen so viel Speicher wie das Objekt selbst?
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).
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.
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.