COM とは異なり、共通言語ランタイムはオブジェクトの有効期間を決定するのに参照回数を使用しません。代わりに、ガベージ コレクタがオブジェクトの参照をトレースし、実行中のコードがアクセスできなくなっているオブジェクトを判定します。
これによって循環参照に配慮する必要がなくなるので、コンポーネントのプログラミングをきわめて簡素化できます。複数のオブジェクトが相互に対応する参照を格納しているのに、それらのオブジェクトのいずれもスタック変数または共有変数から直接的にも間接的にも参照されていない場合は、ガベージ コレクションは自動的にメモリをクリアします。
トレース付きガベージ コレクションには、新規オブジェクトを高速でメモリに割り当てることができるという利点もあります。COM の AddRef 機構と Release 機構を除去すると、性能が改善され、オブジェクトが必要とするメモリも少なくなります。
トレース付きガベージ コレクションの欠点として唯一考えられるのは、実行中のコードが到達できる最後の参照を発行してから、ガベージ コレクタがそれを検出するまでの間隔です。搭載するメモリが多量で負荷の軽いシステムでは、コンポーネントのデストラクタが呼び出されるまで長時間かかります。
.NET Framework は、限られたシステム リソースや高価なシステム リソースを使用するコンポーネントにはすべて Dispose メソッドを実装する方式を採用しています。コンポーネントのインスタンスを使用して処理が終了した場合は、Dispose を呼び出して、コンポーネントが使用中のメモリ以外のすべてのリソースを解放し、コンポーネントを無効化します。詳細については、「コンポーネントの初期化と終了」を参照してください。
参照
コンポーネント アーキテクチャ | Dispose メソッド | IDisposable インターフェイス