2009-03-10 11 views
5

Wie groß ist ein Heap-allokiertes Objekt in .net, einschließlich Verwaltungsaufwand? Ich gehe davon aus, dass Objekte entlang 4-Byte-Grenzen zugewiesen werden, oder wird ein anderer Ansatz verwendet?.NET-Objektgröße

+0

Siehe: http://stackoverflow.com/questions/324053/find-out-the-size-of-a-net-object –

+0

Jon B: Diese Frage ist über die Größe eines beliebigen Objekts in. NET, während dies Die Frage bezieht sich auf die Größe von Instanzen der .NET-Objektklasse. Eine ganz andere Frage. –

Antwort

5

4-Byte-Grenzen auf x86. Möglicherweise 8 Byte Grenzen auf x64.

Es gibt einen 8-Byte-Overhead auf x86, für eine Typenreferenz und einen Sync-Block. Ich wäre nicht überrascht zu finden, dass das 12 oder 16 Byte auf x64 ist.

Aus irgendeinem Grunde auf x86 eine Instanz nur System.Object erscheint 12 Bytes zu nehmen, 12 Bytes der absolute Mindestgröße möglich zu machen - aber eine Klasse mit einem int nimmt auch 12 Bytes. Ich habe keine Ahnung, warum das so ist.

+0

Sie sollten nicht in der Lage sein, die hohen und niedrigen Fragen so gut zu beantworten. Ich schreibe mit einem neuen Tag: Stumpf-der-Skeet. In diesem Fall ist diese Frage der Stumpf-der-Skeet: fehlgeschlagen. –

+0

Dieser Tag dauerte nicht lange. ;-) –

+0

dargestellt. Ich dachte, ich würde es versuchen. :) –

1

Abhängig von einer Maschine, auf 32-Bit-Maschine ist es normalerweise 4-Byte. In der 64-Bit-Box sind es jedoch 8 Byte und so weiter.

+0

Ich denke, Sie sprechen über die Größe einer * Referenz * und nicht über den Objektaufwand. –

+0

argh, ja. danke –