Winform应用程序,窗口最小化会强制进行垃圾回收吗?

4
这里有一个场景,一个WinForms应用程序,通过任务管理器的进程选项卡进行监测。
初始启动时内存使用量会增加到约61,000K(因为数据表和数据加载)。如果我最小化这个应用程序,不做任何操作,内存使用量会降至1,380K。当我恢复应用程序时,内存使用量只会升至5.8K。
所以我的问题是,最小化时是否发送了一些内部消息来清理资源,因为此时该应用程序并未处于焦点状态?
我注意到这种情况首先出现在VB.NET应用程序中,但我也发现了同样的行为发生在我的主要C# WinForms应用程序中。

也许是重复的问题:https://dev59.com/M2445IYBdhLWcg3wcJ2O - Simon Mourier
是的,另一个问题已经很好地涵盖了它...抱歉在打这个问题时没有看到它...由于已经有答案,所以无法删除,投票关闭。 - curtisk
你会在所有的应用程序中注意到这一点,而不仅仅是针对.NET Framework的应用程序。Hans的回答在这里很好;重复问题的答案有大量的额外信息。 - Cody Gray
@Cody Gray:是的,我后来注意到了这一点,因为我们在查看这个特定应用程序的更深层次时,它很显眼,我们已经开始使用perfmon和SOS进行分析,谢谢。 - curtisk
1个回答

7
您正在查看错误的内存统计信息。那是“工作集”,即映射到物理内存的虚拟内存量。RAM。当Windows检测到主窗口被最小化时,它会积极地修剪工作集。它假设用户暂时不会使用该程序,因此取消映射从RAM到其他进程的页面以腾出空间。当您重新将其聚焦时,Windows仅将实际需要的页面映射回RAM。当应用程序处于闲置状态时,实际上并不需要太多页面。
垃圾收集是一种虚拟内存操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接