2009-03-10 7 views
5

Jaki jest rozmiar obiektu przydzielonego sterty w .NET, w tym narzut na zarządzanie? Zakładam, że Obiekty są przydzielane wzdłuż 4-bajtowych granic, czy też zastosowano inne podejście?.NET Rozmiar obiektu

+0

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

+0

Jon B: To pytanie dotyczy rozmiaru dowolnego obiektu w .NET, podczas gdy to pytanie dotyczy rozmiaru instancji klasy .NET Object. Zupełnie inne pytanie. –

Odpowiedz

5

4 granice bajtów na x86. Prawdopodobnie 8 bajtowych granic na x64.

Na x86 występuje 8 bajtowe obciążenie, dla odwołania do typu i bloku synchronizacji. Nie zdziwiłbym się, gdyby znalazł 12 lub 16 bajtów na x64. x86 na wystąpienie tylko System.Object pojawia

jakiegoś powodu, w celu 12 bajtów, co 12 bajtów bezwzględna wielkość Minimalna - ale klasę z intrównież zajmuje 12 bajtów. Nie mam pojęcia, dlaczego tak się dzieje.

+0

Nie powinieneś być w stanie tak dobrze odpowiedzieć na wysokie i niskie pytania. Wracam z nowym tagiem: stump-the-skeet. W tym przypadku to pytanie brzmi: stump-the-skeet: fail. –

+0

Ten tag nie trwał długo. ;-) –

+0

wymyślił. Myślałem, że spróbuję. :) –

1

Zależy od maszyny, na maszynie 32-bitowej zwykle jest to 4-bajtowe. Jednak na 64-bitowym polu jest to 8-bajtowe i tak dalej.

+0

Myślę, że mówisz o rozmiarze * referencji *, a nie o samym obiekcie. –

+0

argh, tak. dzięki –

Powiązane problemy