2011-06-22 22 views
0

WPFアプリケーションで作業していますが、画面からログアウトしたときにすべてのメモリを解放していないようです。アプリケーションの開始時に、私はuserID/Pwdを入力するログイン画面があります。それは別の画面(WPF2と言うことができます)にかかります。この時点で、私はログイン画面を完全にアンロードしています(今は70MBです)。 WPF2画面が動的に読み込まれると、メモリは200MBまで増えます。ユーザーがWPF2からログアウトすると、ログイン画面が再びロードされます。この時点で、私はdisposeメソッドでWPF2で使用されるすべてのオブジェクトをクリアしています。しかし、メモリはまだ200メガバイトではない70メガバイト、また私は再びそこから増加するログインします。ログアウト時にWPFアプリケーションがメモリを解放しない

アプリケーションが終了すると、使用されているすべてのメモリが解放されます。

私はこれが非常にアプリケーション固有の質問であると理解しますが、一般的な考えは高く評価されます。イベントハンドラがまだそれらに接続されている場合、またはアプリケーションが閉じたときに

おかげ

答えて

0

は、あなたがメモリ値を取得する方法についての十分な情報がない与えました。私はあなたがタスクマネージャーを見たと思いますか?タスクマネージャーだけを見ると、期待した値が得られない可能性があります。さらに、オブジェクトが使用されなくなった瞬間にメモリの解放は行われません。ガベージコレクションによって行われる非同期タスクです。特定の時点でメモリを測定したい場合は、前もってGCがメモリを解放するように強制するべきです(しかし、実測コードではなく測定のためだけです)。 thisスレッドを見て、異なるメモリタイプについての出発点を取得してください。

Here非常に優れたビデオが見つかり、WPFのメモリ問題をデバッグすることができます。

+0

はい、私はタスクmgrを見ていました。そして、あなたはいつか記憶が解放されます。リンクやビデオはとても役に立ちます。ありがとう – user296623

1

アイテムがメモリから解放されていません。

クリーンアップするイベントハンドラがあるようです。このことができます

希望、

0

IDisposableDispose()と電話をすると、umanagedリソースを消去できます。
GarbageCollectorがまだWPF2を収集していない可能性があります。

+0

それは数分後にリリースされました。 – user296623

関連する問題