空白WinForms应用程序中的内存消耗过多
为什么我的Windows窗体应用程序在它是一个空白的应用程序时消耗的内存越来越多,甚至没有被用户(我)使用?
您可以使用以下步骤重现:
- 打开Visual Studio 2013 Ultimate
-
New Project
>C#
>Windows Forms Application
>.NET Framework 4.5
-
从“
Toolbox
窗格向Form1
添加PictureBox
- 右键单击
PictureBox
然后选择Choose Image...
- 选择 GIF文件
- 点击F5
- 打开
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 🙂