2011-12-19 7 views
0

.Netライブラリに関するいくつかの調査作業をしており、オブジェクトをC#でコード化しようとしました。 私は、オブジェクトがガベージコレクションに適格であることを知りたいと思っています。 GC関数を実行する前に、私たちのオブジェクトが他のメモリを参照することができますか?つまり、それらをメモリ内に移動できますか?たとえば、ファイナライザを実装する場合は、プロセスの途中でファイナライザを呼び出す必要がありますか? 私は私の概念をクリアしたい、私はそれを行うためにいくつかのC#のコードを使用しようとしましたが、私ははっきりしていません。.Net implementaionのガベージコレクション、オブジェクトの動作が不明で、その動作を理解できません。

答えて

3

実行時に到達可能なオブジェクトのグラフが保持されます。 GCが実行され、オブジェクトがガベージであると判断された場合、オブジェクトにはFinalizeメソッドがあり、メソッドを呼び出してメモリを再利用します。 Finalizeメソッドを持つすべてのオブジェクトがファイナライズキューから削除され、F-Reachableキューに入れられます。特別なランタイムスレッドは、このキューを処理し、各オブジェクトのfinalizeメソッドを呼び出すために使用されます。

MSDNでJeffery Richterの次の記事を読むことをお勧めします。それは3つの部分の記事であり、あなたのすべての疑問をクリアするでしょう。

http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

関連する問題