为什么桌面窗口管理器会泄漏内存甚至崩溃?

tsi*_*ilb 7 windows-7 crash window-manager aero memory-leaks

我的桌面窗口管理器内存使用量不断增加并导致它禁用 Aero,说它用完了允许的内存。当我终止它的进程时,DWM 重新启动并恢复正常。为什么会这样?我该如何纠正?我可以更改允许的内存量吗?

在此处输入图片说明

硬件:

  • Intel Core 2 Quad / EVGA 680i 主板
  • 8GB 爱国者 DDR2
  • (3x) Sapphire ATI Radeon HD 4760(多监视器设置,不是交火设置)

编辑:

New system. Now on an AMD Phenom 2 1055T with 16GB DDR3. Same install of Windows 7 and same video cards (Though the new mobo, an MSI nf980-g65 also has onboard HDMI, which I'm now also using). Same exact issue.

I find it happens more often when I have browser(s) open, and when I have Seesmic (A Silverlight out-of-browser application) open.

MDR*_*MDR 7

Windows 工程团队对此的官方非官方解释是,Windows 将 GPU 加速应用程序固定到您的主显卡。工程团队将其描述为在非主显卡上使用 GPU 加速应用程序“非常低效”。

他们对这样的事实非常不屑一顾,因为这已经工作了很多年,现在所有的 GPU 渲染应用程序都存在关闭 DWM 的高风险。

尽管复制很简单,但他们知道没有修复,也没有声称没有复制。以非 SLI/Crossfire 方式运行多个视频卡并输出到多个监视器。然后将半主动 GPU 加速应用程序移至非主显卡并监控共享内存 GPU 分配。它们会随着应用程序的 GPU API 的活动而激增。只需在 GPU 加速浏览器(Chrome、IE、Firefox)中滚动或输入,您可能会面临 DWM 分配更多 GPU 共享内存的风险,而不是它的释放速度。

可能存在与重新编译相关的问题,这可能是视频卡内存与系统内存比率的组合,但是我可以验证具有多个视频卡设置的任何系统上的 GPU 共享内存峰值。是否取消 DWM。

DWM 有一个资源使用终止开关,当它超过相对于您的机器的资源分配时就会启动。我不确定具有更多系统 RAM 的系统或具有更多 GPU ram 的系统是否更容易受到影响,因为内存分配通常相对于您的 RAM 进行填充。在 3 个几乎相同但 RAM 量不同的系统上启动 10 个应用程序,您将获得不同的内存消耗。

再次解决此问题的官方非官方回应是 - 没有解决方案,您不应在非 SLI/Crossfire 设置中运行多个视频卡。

在浏览器上禁用 GPU 加速也有效。IE9 是我所知道的唯一一个禁用 GPU 加速会导致性能相当低的浏览器。

当然,这个问题也迫使人们在运行 Flash/Silverlight/Movies 时非常小心。在我的设置中,尽管第二块显卡与我的第一块显卡完全相同,但在我的第二块显卡上运行它们几乎是自杀。

  • 您好,欢迎使用超级用户。您有什么信息来源可以与我们分享吗? (2认同)
  • 实际上,我在 2011 年 10 月感到好奇,并通过电子邮件向@Microsoft 的几个人发送了电子邮件。令人惊讶的是,史蒂夫在 Windows Dev 的图形(如显卡/gpu/wdm)部门工作,这是他解释的摘录。 (2认同)