.Netプログラマーたちは毎日Objectを扱っています。 もし彼らにObjectとはなんなのかを聞くと、おそらくObjectとはすべてのタイプの基底クラスだと答えるでしょう。 この答は正しいが不十分です。 この記事では、われわれはCoreCLRのソースコードを読んでObjectとはどんなものかをより深く理解できます。 そして最後はメモリー上のObjectの構造を実際に観察します。 Objectのメモリー構造 これからの内容をよく理解するために、まずはObjectのメモリー構造を表す画像をご覧ください: Objectは三つの部分に分かれています オブジェクトヘッダー(=シンクロブロック) (object header = sync block) lock(obj)またはMonitor.Enter(obj)が使うインディクス値、一部のビットフラグも保存されている タイプ情報を指すポインタ (
![(翻訳) CoreCLRのソースコードを研究する(一) Objectとは](https://cdn-ak-scissors.b.st-hatena.com/image/square/cbc1f0f7d57c0fbd7dc87d81bc07542c36a83eff/height=288;version=1;width=512/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fqiita-fb-2887e7b4aad86fd8c25cea84846f2236.png)