2016-12-06 5 views
0

私はOOPのメモリ管理について読んでいます。私はコールスタックと、ヒープ上のオブジェクトインスタンス化の仕方を理解しています。 OS POPとプッシュがスタック・データをどのように登録するか。 GCスレッドがヒープから未再利用のガベージを収集する方法 私は、仮想空間上で作成された関数ポインタ(デリゲート)がther関数を指し示すように機能することも理解しています。ヒープ上のクラスオブジェクトはメソッドの詳細も格納しますか?

私の質問は、オブジェクトがインスタンス化されるときに、そのタイプ(クラス)のメソッドの詳細をHEAPに格納するのか、またはidentiferの名前のようにコンパイラが内部的に使用するだけですか?ちょうどintのようにヒープ上の4バイトです、私はちょうど4バイトで、メソッドvaribleも格納されて知っているか?

答えて

0

ヒープに格納されたすべてのオブジェクトは、あなたのケースintに、(I)ヘッダブロック、及び(II)データから成ります。

ヘッダーブロックは、プログラムメモリ内のコンパイル済みコードの一部である、オブジェクトの型と型の有効な操作を.NETに通知します。

この深くダイブについては、こちらをご覧ください:私は右だ場合 http://blogs.microsoft.co.il/sasha/2012/03/15/virtual-method-dispatch-and-object-layout-changes-in-clr-40/

+0


はあなたに感謝し、戻ってコメントしてください。 >私たちが作成するすべてのメソッドはコンパイラのすぐ上にあり、コンパイラの下にあり、コンパイラは解析してISAのintructionをポップし、オブジェクトデータ(プロパティなど)をヒープに格納し、refrenceをスタックに格納します。計算後、ヒープからガベージコレクションを取得します。 – sadanand

関連する問題