WPF应用程序在注销时未释放内存
我正在开发一个WPF应用程序,它在注销屏幕时似乎不会释放所有内存。在应用程序启动时,有一个登录屏幕,我在其中输入userID/Pwd。它需要一个不同的屏幕(比如WPF2)。此时,我正在完全卸载登录屏幕(内存现在是70MB)。当WPF2屏幕动态加载内存时,内存将达到200MB。当用户从WPF2注销时,登录屏幕再次加载。此时,我正在清除dispose方法中WPF2中使用的所有对象。但是内存仍然是200MB,而不是70MB,而且当我再次登录时,它会从那里增加 当应用程序关闭时,将释放所有使用的内存 我知道这是一个非常特定于应用程序的问题,但任何一般性的想法都会受到高度赞赏WPF应用程序在注销时未释放内存,wpf,memory,Wpf,Memory,我正在开发一个WPF应用程序,它在注销屏幕时似乎不会释放所有内存。在应用程序启动时,有一个登录屏幕,我在其中输入userID/Pwd。它需要一个不同的屏幕(比如WPF2)。此时,我正在完全卸载登录屏幕(内存现在是70MB)。当WPF2屏幕动态加载内存时,内存将达到200MB。当用户从WPF2注销时,登录屏幕再次加载。此时,我正在清除dispose方法中WPF2中使用的所有对象。但是内存仍然是200MB,而不是70MB,而且当我再次登录时,它会从那里增加 当应用程序关闭时,将释放所有使用的内存 我
感谢当事件处理程序仍然连接到项目时,或者当应用程序关闭时,项目不会从内存中释放 听起来您需要清理一些事件处理程序
希望这有帮助,您没有提供足够的关于如何获取内存值的信息。我猜你在找任务经理?如果只查看任务管理器,可能无法获得预期的值。此外,内存释放不会在对象不再使用时进行。它是由垃圾收集完成的异步任务。如果您想在特定的时间点测量内存,您可能应该在之前强制GC释放内存(但仅用于测量,不用于生产代码)。查看线程以获得关于不同内存类型的起点
您会发现一个非常好的视频,它为调试WPF中的内存问题提供了一个开始 在
IDisposable
上调用Dispose()
时,可以清除过期的资源。垃圾收集器可能尚未收集WPF2。几分钟后它就发布了。是的,我正在查看任务管理器。你纠正了一段时间后释放的记忆。链接和视频非常有用。谢谢