メモリリークがあるように見える.NETアプリケーションに取り組んでいます。私は教科書の答えを知っています、イベントは購読をやめるべきであり、使い捨ての物は処分されるべきです...
エラーを再現できるテストハーネスがあります。あるクラスのファイナライザーでコンソールに書き込みます
public class Foo
{
// Ctor
public Foo()
{
}
~public Foo()
{
Console.WriteLine("Foo Finalized");
}
}
テストハーネスでは、Fooの単一インスタンスを作成し(これにより、他の何百ものタイプが作成され、相互作用します)、それを削除してガベージコレクターを呼び出します。
Fooファイナライザーが呼び出されることはありません。私はこの設定で同様のクラスを持っており、これはコントロールテストとして完成します。
だから私の質問はこれです:
商用ツールまたはオープンソースツールを使用して、Fooへの参照を保持しているものを正確に判断するにはどうすればよいですか?
dotTrace Memory Profilerのプロフェッショナルライセンスを持っていますが、ヘルプファイルからその使用方法を理解できません。
更新:現在、dotMemory 4.0を使用しています。これは、(良いが使用できない)dotTraceMemory3.5の後継です。