【问题标题】:Winform application, does window minimize force garbage collection?Winform应用程序,窗口是否最小化强制垃圾收集?
【发布时间】:2011-02-08 17:08:44
【问题描述】:

这是场景,winforms 应用程序,通过任务管理器进程选项卡进行监控。

初始启动时旋转高达 ~61,000K(初始数据网格和数据加载) 如果我最小化应用程序,不触摸或不做任何事情,Mem 使用量会下降到 1,380K。 当我恢复应用程序时,它只恢复到 5.8K

所以我的问题是,由于相关应用程序不在焦点上,因此最小化是否会发送一些内部消息来清理资源?

我注意到这一点的第一个应用程序恰好是 VB.NET,但我在我的主要 C# winform 应用程序中观察到了相同的行为。

【问题讨论】:

  • 是的,另一个问题很好地涵盖了它......对不起,我在打字时查看建议的欺骗时没有看到它......因为有答案,所以无法删除,投票给关闭
  • 您会在所有应用程序中注意到这一点,而不仅仅是针对 .NET Framework 的应用程序。汉斯的回答在这里很好;重复问题的答案包含大量附加信息。
  • @Cody Gray:是的,我已经注意到了,因为我们在这个特定应用程序的幕后进一步研究,所以我们已经开始使用 perfmon 和 SOS 进行分析,谢谢

标签: c# .net vb.net memory-management garbage-collection


【解决方案1】:

您正在查看错误的内存统计信息。那是“工作集”,即映射到物理内存的虚拟内存量。内存。当 Windows 检测到主窗口被最小化时,它会积极地修剪工作集。它假定用户暂时不会使用该程序,因此它会从 RAM 中取消映射页面以为其他进程腾出空间。当您将焦点放回时,Windows 只会将页面映射回实际需要的 RAM。当应用处于空闲状态时,它们中的数量并不多。

垃圾回收是一种虚拟内存操作。

【讨论】:

    猜你喜欢
    • 2011-10-02
    • 2010-09-29
    • 2015-02-12
    • 2011-01-26
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多