0

重複の可能性:
.NET でメモリ リークを見つけるのに役立つ戦略とツールは何ですか?

しばらく実行すると「メモリ不足」の例外が発生するプログラムがあります。これはかなり複雑なプログラムで、かなり多くの非同期処理が含まれています。コードから開始して問題を診断するのではなく、ガベージ コレクトされていないメモリを乱雑にしているオブジェクトを特定できれば、有利なスタートが切れるかもしれないと考えました。

これを行う方法はありますか?

4

3 に答える 3

0

スレッドを使用して特定のスレッドを同時に実行するなど、スレッドでコード制御を非同期にする場合、たとえば、この実行の完了後に 10 スレッドのみを同時に実行し、次の 10 スレッドを実行し、アンマネージ オブジェクトを作成している場合は、それを明示的に破棄します。

于 2012-10-01T07:03:01.607 に答える
0

プロファイラーを使用してオブジェクトをチェックできますが、多くの非同期処理が組み込まれている場合、それに応じてロジックを変更できないことがあります。

通常、イベント ハンドラー パターンを使用することで、知らないうちにメモリ リークが発生します。

これに関する投稿がいくつかあります: http://www.codeproject.com/Articles/123448/GC-Algorithm-and-Story-of-WeakReference

http://www.abhisheksur.com/2012/02/optimizing-inpc-objects-against-memory.html

それらはあなたの問題に固有のものではありませんが、あなたを助けることができます.

于 2012-09-30T16:33:37.573 に答える
0

私は間違いなくプロファイラーを使用します。メモリ プロファイリングに使用した中で最も優れたものの 1 つは、SciTech のメモリ プロファイラーScitech .NET Memory Profilerです。

于 2012-10-01T03:35:57.207 に答える