当应用程序最小化x个时间时,如何减少内存消耗

时间:2013-07-01 04:34:40

标签: c# .net memory memory-management

这是Windows的常见问题。多年来,这是我注意到的事情,它真的让我感到害怕到了我不想再制作应用程序的地步。所以我决定尝试在我自己的应用程序中修复它。

当我最小化应用程序时(例如,Visual Studio,Windows资源管理器,Internet Explorer,Chrome或任何其他应用程序)并将其留在那里一段时间,会有很大的延迟(在3到20秒之间的任何时间)我点击任务栏中的图标直到它再次到达WindowState.Normal的时间。

这是为什么?为什么Windows在桌面上最小化时暂停进程?我如何在自己的应用程序中解决这个问题?

我考虑过使用Timer。当我最小化我的应用程序时启动计时器,让它运行一段时间并说,在它被最小化大约10-15分钟后,如果还没有恢复,开始释放一些资源,希望释放一些内存 - 我认为这会使响应时间更快,因此当我尝试取消最小化我的应用程序时,我感觉不到我在ER中等待。但我不确定Timer是否是处理这个问题的正确方法,我甚至不确定这是否是正确的解决方案。我所知道的是,我厌倦了这一点,我需要做点什么。

以前有人处理过此事吗?是否有任何文章或有MSDN文档解决这样的问题?

如何更好地管理我的应用中的资源,以便在闲置一段时间后不会变得那么慢?

  • 此问题对于任何应用都很常见。不仅仅是我的。

编辑:我不知道该怎么做。当问题实现using()时,我总是充分利用IDisposable,而我只是不知道如何尝试释放一些资源或加快响应时间。

1 个答案:

答案 0 :(得分:2)

您描述的症状似乎表明您的机器缺少物理内存。当您最小化应用程序并激活另一个应用程序时,最小化的应用程序将其许多内存页面换出到磁盘。当您激活该应用程序时,属于其他应用程序的页面将被换出到磁盘,并且属于您刚刚激活的应用程序的先前交换的页面将被交换到物理内存,由于硬盘驱动器相对较慢,需要很长时间。解决方案:添加更多内存,相对便宜。如果你的O.S.是32位,你可以达到4GB。如果你的O.S.是64位,无论你的主板支持什么是限制。