空白WinForms应用程序中的内存消耗过多

为什么我的Windows窗体应用程序在它是一个空白的应用程序时消耗的内存越来越多,甚至没有被用户(我)使用?

您可以使用以下步骤重现:

  1. 打开Visual Studio 2013 Ultimate
  2. New Project > C# > Windows Forms Application > .NET Framework 4.5

  3. 从“ Toolbox窗格向Form1添加PictureBox

  4. 右键单击PictureBox然后选择Choose Image...
  5. 选择 加载动画 GIF文件
  6. 点击F5
  7. 打开Task Manager ,观察内存每秒增加N KB。

由于显而易见的原因,这让我感到疯狂。 我的应用程序从大约<1MB开始,在几分钟内,它达到了大约10MB。 再给它几分钟,它再次达到~40MB。 它并不止于此。 事实上,我让它跑了一夜,当我醒来时,电脑没有响应。

GC没有收集未使用的内存,因为它非常小。

您可以尝试强制GC收集(不是一个好的做法,仅用于测试)

 public Form1() { InitializeComponent(); _timer.Interval = 10000; _timer.Tick += _timer_Tick; _timer.Start(); } void _timer_Tick(object sender, EventArgs e) { GC.Collect(); } 

在此之后,我的PC上的内存保持在3.2 MB 🙂