3

コンテキスト: WPF アプリケーションを迅速に配信するためのフレームワークを構築しています。このフレームワークは Autofac を IoC コンテナーとして使用し、Prism v1 のリージョンも使用します。Microsoft の Parallel 拡張機能を使用してタスクをスケジュールしています。

次の問題に直面しています: アプリケーションを空のビュー (領域とプレースホルダー コントロールを持つシェルのみ) で起動すると、メモリは約 60 秒間安定したままになり、その後は約 1 秒ごとに 4kb、次に 4kb ずつ増加します。 、その後8kb。したがって、3 秒ごとに 16Kb がメモリ プレッシャに追加されます。

リークを追跡するために何を試みましたか。最初は dotTrace を使用しましたが、30 分間隔で撮影した 2 つのスナップショットに違いは見られませんでした。より多くの情報が得られるため、.NET メモリ プロファイラに移動しましたが、2 つのスナップショット間の違いは見られません。多数のオブジェクトが作成されていることがわかりますが、それらも削除され、結果としてデルタが 0 になります。そこで、windbg に進みましたが、結果は同じです。

もう 1 つの奇妙な点は、sysinternals dbgvw を起動しても、アプリケーションで呼び出しが行われていないことです。

何が/誰が犯人かを突き止めるために次に何をしようとしているのか、何か提案はありますか?

4

2 に答える 2

0

管理されていないリークを探していて、Visual Studio を使用している場合は、組み込みの crt 関数を使用して驚くほど役立つ情報を取得できます。

関連する質問への回答を見る

于 2009-04-29T14:48:59.307 に答える
-1

結局のところ、これは WPF 内のバグであり、回避策はウィンドウ ハンドラーを最初のオブジェクトか何かとして作成することでした。みんなありがとう

于 2009-09-07T13:22:15.307 に答える