2009-08-12 10 views
1

オブジェクトの実行可能コードは、の場合はすべてインスタンス、またはの場合はそれぞれ1回保存されますかインスタンス?.NETオブジェクト実行可能命令メモリ消費?

つまり、オブジェクトのコードが一度格納され再利用されているか、各インスタンスに独自のコピーがありますか?

答えて

2

コードは静的なデータと同様に共有されます。

インスタンスに固有のクラスの部分だけが分離されています。

+1

私は不思議そうですが、これがそうでないところでは、オブジェクト指向のフレームワーク/言語がありますか? :) –

2

ここで最初のオーバーヘッドフィールドは。http://msdn.microsoft.com/en-us/magazine/cc188793.aspx

「オブジェクトはヒープ内に作成されるたびに、各オブジェクトは、それに関連する2つの追加のオーバーヘッドフィールドを取得しますから取られた、もう少し詳しくだ、MethodTablePointerは、メモリアドレスが含まれています実際には、System.ObjectのGetTypeメソッドを内部的に呼び出すと、このメソッドはオブジェクトのMethodTablePointerフィールドの後に置かれ、どのタイプのメソッドテーブルであるかを判断します。オブジェクトは "

したがって、インスタンスはこの共有タイプのデータ/コードを複製しません。代わりに、それへのポインタがあります。

関連する問題