WPF应用程序在注销时未释放内存

WPF应用程序在注销时未释放内存,wpf,memory,Wpf,Memory,我正在开发一个WPF应用程序,它在注销屏幕时似乎不会释放所有内存。在应用程序启动时,有一个登录屏幕,我在其中输入userID/Pwd。它需要一个不同的屏幕(比如WPF2)。此时,我正在完全卸载登录屏幕(内存现在是70MB)。当WPF2屏幕动态加载内存时,内存将达到200MB。当用户从WPF2注销时,登录屏幕再次加载。此时,我正在清除dispose方法中WPF2中使用的所有对象。但是内存仍然是200MB,而不是70MB,而且当我再次登录时,它会从那里增加 当应用程序关闭时,将释放所有使用的内存 我

我正在开发一个WPF应用程序,它在注销屏幕时似乎不会释放所有内存。在应用程序启动时,有一个登录屏幕,我在其中输入userID/Pwd。它需要一个不同的屏幕(比如WPF2)。此时,我正在完全卸载登录屏幕(内存现在是70MB)。当WPF2屏幕动态加载内存时,内存将达到200MB。当用户从WPF2注销时,登录屏幕再次加载。此时,我正在清除dispose方法中WPF2中使用的所有对象。但是内存仍然是200MB,而不是70MB,而且当我再次登录时,它会从那里增加

当应用程序关闭时,将释放所有使用的内存

我知道这是一个非常特定于应用程序的问题,但任何一般性的想法都会受到高度赞赏


感谢

当事件处理程序仍然连接到项目时,或者当应用程序关闭时,项目不会从内存中释放

听起来您需要清理一些事件处理程序


希望这有帮助,

您没有提供足够的关于如何获取内存值的信息。我猜你在找任务经理?如果只查看任务管理器,可能无法获得预期的值。此外,内存释放不会在对象不再使用时进行。它是由垃圾收集完成的异步任务。如果您想在特定的时间点测量内存,您可能应该在之前强制GC释放内存(但仅用于测量,不用于生产代码)。查看线程以获得关于不同内存类型的起点


您会发现一个非常好的视频,它为调试WPF中的内存问题提供了一个开始

IDisposable
上调用
Dispose()
时,可以清除过期的资源。

垃圾收集器可能尚未收集WPF2。

几分钟后它就发布了。是的,我正在查看任务管理器。你纠正了一段时间后释放的记忆。链接和视频非常有用。谢谢