1

私は Visual Studio 2008 を使用して Winform/WPF プロジェクトに取り組んでいます。

複数のプロジェクトとクラスを使用して、動作する製品に組み込みます。

私の問題は、メモリ使用量に毎秒 4 ~ 8k のリークがあることに気付いたことです。確かに小さなリークですが、ノンストップで連続 4 ~ 8k です。私たちのアプリケーションは一晩中、場合によっては数日間実行されます。その数日が一人で来ると、これはコンピューターが処理できるよりも多くのメモリ (通常は 2 ~ 3 ギガ) を消費し、PC を強制的に再起動することが唯一の解決策です。このリークは、ホストとのネットワーク通信以外に何も起こっていないときにも発生します。

ANTS Memory Profiler を使用してプロジェクトをさらに分析した結果、プライベート バイト データが継続的に増加していることがわかりました。この個人データがどこから作成されているかを知る方法はありますか? これをANTSで追跡するのはあまり運がありませんでした。ステップは非常に役立ちます!

増加するプライベート バイトのイメージ (~45 分):

各スナップショットでのプライベート バイトのグラフ

タイムラインの成長の画像 (~45 分):

プライベート バイトの成長のタイムライン

前もって感謝します!

4

1 に答える 1

0

プライベート バイトが増加し続ける場合は、メモリ リークが発生していることを意味します。DebugDiagを試してみてください。これは MS から提供されており、無料であり、Windows でのメモリ リークを追跡するための非常に優れたツールでもあります。

このツールの使い方は簡単です。まず、DebugDiag コレクションでプロセスを監視するルールを作成します。ルールに従ってメモリ ダンプが作成されます。メモリ ダンプは手動で作成できます。次に、DebugDiag 分析を使用してダンプを分析できます。分析の前に正しいシンボル パスを設定してください。

この MSDN の記事「マネージ コードでのメモリ リークの識別と防止」も役立つ場合があります。この記事では、メモリ リークがネイティブ リークかマネージド リークかを確認する方法を示します。純粋に .NET 管理リークである場合は、CLR プロファイラーを使用して問題をデバッグすることもできます。

于 2014-04-16T20:26:37.527 に答える