处理完Windows窗体后清除RAM

时间:2017-10-08 18:34:52

标签: c# winforms memory ram using

我编写了一个测试程序,以了解如何在C#中关闭Windows窗体后清除内存。我已经阅读了这个问题,并且我已经尝试了所有建议的内容(所以请不要将此标记为重复的问题)。

其中一个建议是使用using语句,有些人推荐Dispose()方法,所以我同时使用这两种方法。

在我的测试项目中,我创建了一个Form,我在其中放置了一个PictureBox,其中包含一张巨大的图片(使用更多的RAM)而没有其他内容。 Program.cs中的代码如下:

using (Form1 form = new Form1())
{
   Application.Run(form);
   form.Dispose();
}

一个建议是强制垃圾收集器运行,所以我甚至添加了

GC.Collect();
GC.WaitForPendingFinalizers();

然而,我正在观察Visual Studio中的诊断工具,它说过程存储器仍然是122MB。

编辑:从评论中我很清楚,处理表格并不会处理其中的所有内容。我想我的问题是,是否有一个干净的方法来做,或者我是否需要遍历所有内容并确保我所引用的所有内容都被处理掉了?

编辑:为了进一步澄清,我将Program.cs更改为以下内容,并在表单的类中添加了一个随机非空字符串,并删除了其他所有内容。表单一加载就关闭。

  while (true)
  {
      using (Form1 f = new Form1())
      {
           Application.Run(f);
      }
      GC.Collect();
      GC.WaitForPendingFinalizers();
  }

当程序运行这个无限循环时,VS诊断工具窗口会显示内存使用情况如何缓慢但肯定会上升。

0 个答案:

没有答案