【发布时间】:2013-01-02 21:14:53
【问题描述】:
我创建了一个测试代码:
private void Application_Startup_1(object sender, StartupEventArgs e)
{
ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
MainWindow window = new MainWindow();
window.Show();
window.Close();
window = null;
GC.Collect();
}
MainWindow 是 Visual Studio 自动创建的窗口,我没有向它添加任何代码。 在“MainWindow window = new MainWindow();”这行之前,应用程序占用了4M内存。打开窗口,变成了13M。 即使我们关闭窗口并调用 GC.Collect() 也不会改变
这些额外的内存有什么用?我们如何释放它们?
【问题讨论】:
-
我也有同样的问题。我的有点不同,因为我的 wpf 窗口是由另一个程序集创建的。我创建了一个新窗口很多,我可以看到内存上升。只有当程序集关闭时,我所有的 wpf 窗口才会被释放。由 windows 解构器中的 debug.writeline 跟踪