3


2

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

次の問題に直面しています。空のビューでアプリケーションを起動すると(つまり、リージョンとプレースホルダコントロールを持つシェルだけ)、メモリは約60秒間安定したままになり、その後4kb、その後4kbで毎秒増加します、その後8キロバイト。 したがって、3秒ごとに16 KBのメモリ負荷がかかります。

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

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

あなたが犯人となっているのは誰かを突き止めるために私たちが次に試みるかもしれないことについて何か提案はありますか?

2 Answer


0


管理されていないリークを探していてビジュアルスタジオを使用している場合は、組み込みのcrt関数を使用して驚くほど役に立つ情報を入手できます。

https://stackoverflow.com/questions/45627/how-do-you-detect-avoid-memory-leaks-in-your-unmanaged-code/50095#50095[関連質問の回答]


0


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