c# WPF不释放内存当我关闭窗口(其中包括许多图像控件)



我有一个包含许多图像控件的窗口(其中显示了一些高质量的图像)。

我在XAML中添加了这样的图像:

<Image Name="Image" Source="Images/myimage.png" HorizontalAlignment="Left" />
<Image Name="Image2" Source="Images/myimage2.png" HorizontalAlignment="Left"  />
<Image Name="Image3" Source="Images/myimage3.png" HorizontalAlignment="Left"  />

像这样…正如你所看到的,这里没有什么特别的。代码隐藏中没有任何代码。此窗口仅显示这些图像,不做任何其他操作。

因为我要显示很多高质量的图像,内存增加了大约200mb。

当我关闭这个窗口并打开另一个窗口(this.close())时,它不会释放内存。我等了一段时间,等垃圾回收器启动,但什么也没发生。我甚至尝试调用GC.collect(),但它不起作用。

为什么内存不释放?当我关闭此窗口时,是否有办法强制释放此内存?

我引用MSDN关于图像类的文档:

"大的图像文件会影响性能,因为它们加载到记忆"

表示应用程序将图像加载为应用程序资源。

当涉及到应用程序资源时,GC将不会收集它们,因为它们在技术上是"缓存"的,以便在应用程序中使用。(因此,以某种方式被引用)

相关内容

最新更新