1

それぞれに 2 つの同時実行辞書を含む要素で構成されるキャッシュがあり、それらがアプリケーションのメモリ リークの原因である可能性があると思います。私は頻繁にこの辞書に追加したり削除したりしています。並行辞書のメモリ割り当てがどのように機能するか、および私の場合のベストプラクティスは何かについて説明してもらえますか? 前もって感謝します!

4

2 に答える 2

4

.NET コレクションの remove メソッドはメモリを解放せず、単にコレクションから参照を削除します。これらのオブジェクトを参照するものがない場合、ガベージ コレクターは最終的にそれらをクリーンアップします。

参照が保持される一般的な原因は、イベント ハンドラーの配線を解除するのを忘れていることです。

MemProfiler、dotTrace、ANTS メモリ プロファイラなど、いくつかの .NET メモリ プロファイラには試用版があります。

@Scott Chamberlain が指摘してSystem.Runtime.Caching Namespaceいるように、NET Framework アプリケーションでキャッシュを実装できる型が含まれています。

于 2013-12-11T07:56:19.770 に答える
3

削除する要素がアンマネージ メモリを使用する場合 (ビットマップなどが思い浮かびます)、これらの要素を実装する必要があり、最後の参照が範囲外になる前にIDisposable呼び出す必要があります。.Dispose

于 2013-12-11T08:09:19.943 に答える