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
Odpowiedz
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 int
również zajmuje 12 bajtów. Nie mam pojęcia, dlaczego tak się dzieje.
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. –
Ten tag nie trwał długo. ;-) –
wymyślił. Myślałem, że spróbuję. :) –
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.
Myślę, że mówisz o rozmiarze * referencji *, a nie o samym obiekcie. –
argh, tak. dzięki –
Zobacz: http://stackoverflow.com/questions/324053/find-out-the-size-of-a-net-object –
Jon B: To pytanie dotyczy rozmiaru dowolnego obiektu w .NET, podczas gdy to pytanie dotyczy rozmiaru instancji klasy .NET Object. Zupełnie inne pytanie. –