私はこのトピックについて多くのことを読んできましたが、まだどのように進めればよいか明確な道筋がありません。一部のオブジェクトdctorが呼び出されない理由を見つける方法の詳細な手順を示すリソース(または説明)を誰でも指摘できますか。
基本的にリークをテストするための私のロジックはこれです(WPFアプリケーション):
- View/ViewModel を作成する
- ビューを閉じる
- GC.Collect() を呼び出す
数秒後、ViewModel クラスの dctor が通常呼び出されますが、私のアプリケーションでは呼び出されません。私の意見では、メモリリークの原因を見つける方法であるため、その時点でどのオブジェクトが参照を保持しているかを知りたいです。
このクラスはアンマネージ リソースを使用せず、IDisposable
実装もしていません。つまり、デストラクターの実行を防ぐための SupressFinalize 呼び出しはありません。
編集: ViewModel は、ViewModelLocator の Static プロパティを介して取得され、List に追加されます。これは、バインド先のビュー モデルのコレクションを必要とする TabControl で必要です。View と ViewModel は DataTemplate を介して接続されます。