2009-03-10 4 views
5

管理オーバーヘッドを含む、.netにヒープ割り当てオブジェクトのサイズはいくらですか?私は、オブジェクトが4バイトの境界に沿って割り当てられていると仮定していますか、または異なるアプローチが使用されていますか?.NETオブジェクトサイズ

+0

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

+0

Jon B:この質問は.NET内のオブジェクトのサイズに関するものですが、質問は、.NET Objectクラスのインスタンスのサイズに関するものです。まったく異なる質問です。 –

答えて

5

x86では4バイト境界です。おそらくx64で8バイトの境界。

タイプリファレンスと同期ブロックのために、x86に8バイトのオーバーヘッドがあります。私はそれがx64上で12または16バイトであることに驚くことはありません。何らかの理由で

は、x86でちょうどSystem.Objectのインスタンスは、可能な12バイト絶対的な最小サイズを作り、12バイトを取るように見える - しかし、intを持つクラスも 12バイトになります。なぜこれが当てはまるのか分かりません。

+0

あなたは高レベルと低レベルの質問にうまく答えてはいけません。私は新しいタグ、すなわち切り株を退却しています。 この場合、この質問はstump-the-skeetです:失敗します。 –

+0

そのタグは長く続きませんでした。 ;-) –

+0

となりました。私は試してみたいと思った。 :) –

1

マシンによっては、32ビットマシンでは通常4バイトです。しかし、64ビットのボックスでは、それは8バイトであり、以下同様です。

+0

私はあなたがオブジェクトのオーバーヘッド自体ではなく、*リファレンス*のサイズについて話していると思います。 –

+0

ああ、そうです。ありがとうございます –

関連する問題