【问题标题】:How to reduce memory consumption when app is minimized for x amount of time当应用程序最小化x时间时如何减少内存消耗
【发布时间】:2013-06-28 03:55:14
【问题描述】:

这是 Windows 的常见问题。多年来,我已经注意到了这一点,这真的让我感到厌烦,以至于我不想再制作应用程序了。所以我决定尝试在我自己的应用程序中修复它。

当我最小化一个应用程序(例如,Visual Studio、Windows Explorer、Internet Explorer、Chrome 或任何其他曾经开发过的应用程序)并将其放置一段时间后,会有很大的延迟(介于 3 到 20 秒之间)从我单击任务栏中的图标到它再次达到 WindowState.Normal 的时间。

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

我考虑过使用计时器。当我最小化我的应用程序时启动计时器,让它运行一段时间,然后说,在它被最小化大约 10-15 分钟后,如果它还没有恢复,开始释放一些资源以释放一些内存- 我认为这会使响应时间更快,这样当我尝试取消最小化我的应用程序时,就不会觉得我在急诊室等待。但我不确定 Timer 是否是处理这个问题的正确方法,我什至不确定这是否是正确的解决方案。我只知道我已经厌倦了这种情况,我需要做点什么。

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

如何更好地管理我的应用中的资源,以便它们在一段时间不活动时不会变得如此缓慢?

  • 此问题对任何应用程序都很常见。不只是我的。

编辑:我不知道该怎么做。每当有东西实现IDisposable 时,我总是会很好地利用using(),我只是不知道还有什么方法可以尝试释放一些资源或加快响应时间。

【问题讨论】:

  • 是您的应用程序导致了减速还是其他原因?如果它是空闲的并且消耗资源..你可以保证它是内存泄漏。
  • 我遇到了类似的问题,但情况恰恰相反。请参阅我的question
  • 谢谢@SimonWhitehead。现在,大家伙使用最多的内存和 CPU:Internet Explorer(358MB 内存),只打开了 2 个选项卡(google 和 SO)。在任何时候,我的应用程序在任务管理器中只有大约 1-5mb 内存和 0.n% cpu,但是从任务栏恢复它们时它们的响应速度非常慢。我认为这可能是内存泄漏,但我什至尝试过使用一组完全不同的应用程序(例如,用 Chrome 替换 IE;用基于 Web 的邮件(chrome 内部)替换 Outlook;用记事本替换 Evernote。只是似乎没有无论打开什么应用程序,它总是会发生。
  • 如果您的应用程序工作集稳定并且您的 PC 实际上并没有被占用资源。我会说这与您的应用程序完全无关。
  • 哎呀..答案的链接被破坏了..这是完整的article

标签: c# .net memory memory-management


【解决方案1】:

您描述的症状似乎表明您的机器缺少物理内存。当您最小化一个应用程序并激活另一个应用程序时,最小化的应用程序会将其许多内存页面换出到磁盘。当您重新激活应用程序时,属于其他应用程序的页面会被换出到磁盘,而之前换出的属于您刚刚激活的应用程序的页面会被换出到物理内存中,由于硬盘驱动器相对较慢,这需要很长时间。解决方案:增加更多内存,相对便宜。如果您的操作系统是 32 位的,你可以达到 4GB。如果您的操作系统是64位的,你的主板支持什么都是极限。

【讨论】:

  • 我有 Win8 64 位。我认为是时候升级了。目前,这台电脑有 2GB 的内存,啊,我在 2 或 3 年前(可能是 4 年前)买了这台电脑。我知道那是很久以前的事了,但我不再使用应用程序,所以我并没有真正期待这一点,但感谢您的解释。 :)
  • 按照今天的标准,2 GB 非常低。添加 RAM 就足够了,并且可以避免您购买另一台 PC。您可能会考虑的另一件事是重新安装操作系统。
  • 塔里克;非常感谢。我通常会做一个完整的驱动器格式并重新安装操作系统,但这些天我的互联网计划带宽非常有限(移动宽带),所以不得不重新下载我所有的开发工具,如 Visual Studio、Eclipse、Android Studio以及所需的任何其他框架等对我来说都是一笔巨大的成本,所以除非绝对必要,否则我不再愿意做任何事情(我知道添加更多内存也会花费,但我相信这是一个更长期的解决方案/修复而不是擦拭驱动器并重新安装)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多