2011-06-22 56 views
0

我正在WPF應用程序,似乎不會釋放所有內存時退出屏幕。在應用程序啓動時,有一個登錄屏幕,我輸入userID/Pwd。它需要到不同的屏幕(可以說WPF2)。此時,我完全卸載登錄屏幕(內存現在是70MB)。當WPF2屏幕加載動態內存高達200MB。當用戶從WPF2註銷時,登錄屏幕再次加載。在這一點上,我正在使用dispose方法清除WPF2中使用的所有對象。但內存仍然是200MB而不是70MB,而且當我再次登錄時,它從那裏增加。註銷WPF應用程序不釋放內存

當應用程序關閉時,所有使用的內存都被釋放。

我明白這是非常具體的應用問題,但任何一般的想法都非常感謝。

感謝

回答

0

你卻給不了你如何獲取內存值的足夠信息。我假設你看着任務管理器?如果你只看待任務管理器,你可能得不到你期望的值。此外,釋放內存不是在一個對象不再使用的時候完成的。這是一個由垃圾收集完成的異步任務。如果你想在特定的時間點測量內存,你可能應該在之前強制GC釋放內存(但僅用於測量,不用於生產代碼)。請看this線程來獲得關於不同存儲器類型的起點。

Here您會發現一個非常好的視頻,它開始調試WPF中的內存問題。

+0

是的,我正在看任務管理。你在某段時間後釋放內存。鏈接和視頻非常有幫助。謝謝 – user296623

1

項目不從內存中釋放時,事件處理程序仍連接到他們,或當應用程序關閉。

這聽起來像你有一些事件處理程序清理。

希望這有助於

0

當您在IDisposable上致電Dispose()時,您可以清除不受管理的資源。
GarbageCollector尚未收集WPF2。

+0

幾分鐘後發佈。 – user296623