.Net Framework (たとえば 4.0 以降) の CLR およびガベージ コレクターで使用される基本的なメカニズムとインターフェイスを (詳細に) 詳細に説明している書籍または Web サイトを教えてください。
私は最終的に、ガベージ コレクターが管理対象アイテムを含む管理対象外リストと通信するときに、管理対象アイテムがマークされていると考えるように強制する方法を学ぼうとしています。
内部について読んだ中で最も優れた記事の 1 つは、MSDN Magazine Issue 2005 May - JIT and Run – Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objectsです。
内部構造を理解するための良い本は、Jeffery Richter のCLR Via C#です。
v2.0 ランタイムの内部構造に固執していますが、SSCLI (Rotor など)は、.Net 4.x の内部構造を理解する上で非常に重要です。実動ランタイムとは違いがありますが、多くの概念は同じです。
4.0 と 4.5 の GC は確かに進化しており、エンジニアの 1 人であるMaoni Stephensは、バックグラウンドの同時実行性や持続的な低レイテンシーなどの最新情報を常に把握しています。
特定のニーズに関しては、実際には 2 つのケースしかありません。PInvoke サービスを使用している場合です。この場合、GC がネイティブ側からマネージド オブジェクトに影響を与えることを心配する必要はありません。PInvoke がこれを処理するためです。あなた、およびオブジェクトをGCヒープに明示的に固定する必要がある場合。そうしないと、アンマネージコードで使用されている間にオブジェクトが移動または収集される可能性があります。これには、C#fixed
または C++/CLIpin_ptr
を使用するか、GCHandleを使用できます。
Pro .NET Performance
from Sasha Goldshtein には、ガベージ コレクターに特化した章全体があります。彼は非常に詳細で正確な情報でトピックをカバーしています。
他の誰かがCLR via C#
Jeffrey Richter から言及したように - 第 4 版 (GC 部分はあまり変更されていませんが 4.5 用に更新) が最近出てきましたが、これもお勧めできます。
msdnドキュメントは、常に優れた情報源です。