为什么 dwm.exe 使用这么多内存?

Leo*_*lis 40 memory windows-7 aero dwm

我已经在网上搜索过,但我厌倦了在类似问题的答案中阅读“扫描您的计算机以查找病毒”和“升级您的 RAM”。我知道 dwm.exe 用于(简单地说)缓存 Aero-peek 和类似内容的位图,但据我所知,它不应该使用大量内存。

我和我的同事都有 4GB 的内存,Core 2 Duo,等等,等等——基本上他们都非常有能力。他的 dwm.exe 运行在 30mb 左右,我的当前运行在大约半个 gig,尽管它确实波动很大。运行完全相同的应用程序(当前为 Zend studio、FireFox(使用 firemin - 低内存使用)、Outlook)时也是如此。每隔一段时间,我都会收到一条通知,询问我是否要切换到 Aero Basic,因为它使用了太多内存,有时它会自动切换到基本并告诉我原因。

我知道有可能阻止它切换,但我想知道为什么它使用了太多内存,否则它只会掩盖裂缝。

需要补充的一点是,这似乎是在周一的一次抢劫之后开始的,当时我的两台显示器被盗,我不得不暂时使用几台替代显示器。我现在正在使用全新的显示器,但问题是一样的。所有驱动程序都已安装并运行正常。

任何想法为什么使用率如此之高?

我们使用的是 Windows 7 64 位专业版。

小智 35

DWM.EXE当您有多个屏幕并且系统性能设置为默认设置让 Windows 选择最适合我的计算机时,该过程将消耗大量内存。要改变这一点:

  1. 转到计算机- >右键单击并选择属性
  2. 选择高级选项卡
  3. 选择性能部分下的设置按钮。这将弹出性能选项窗口
  4. 第一个选项卡是Visual Effects。选择Adjust for best performanceCustom(并选择您想要的功能)。

我选择了Custom自己,只选择Smooth edges of fonts了运行 4 个窗口时将内存使用量从 534M 减少到 6M。

  • 这不是全部答案。我在设置中设置了最佳外观,dwm.exe 通常占用 80-100 MB 内存,但最近它开始偶尔飙升至 1300 MB 内存。如果我终止该进程,它会以正常的 80 MB 大小自动重新启动(并且 Aero 风格会立即再次应用,因此重新启动不会破坏视觉效果)。 (3认同)
  • 好吧,如果您不启用 DWM,它当然不会使用任何内存;) (2认同)

Ale*_*kin 8

由于我还不能发表评论,我会将其添加为附加答案。Microsoft 已确认 DWM.EXE 中存在内存泄漏:https : //support.microsoft.com/en-us/kb/3078667

简而言之,当状态窗口长时间打开时,DWM.EXE 会泄漏内存。

  • 对于更多读者:在 Windows 10 上,可能会出现另一个内存泄漏,我的 dwm.exe 大约每小时都会增长,一整天后甚至达到 1 GB,并且仍在增长......两周后没有硬重启(我通常只是休眠)它曾经是 20 GB(是的,即使我只有 16 GB 物理 RAM)...可悲的是,我已经报告了这个问题 2 或 3 次,微软并不关心。 (4认同)

mm2*_*201 8

已确认英特尔显卡驱动程序版本在 27.20.100.8587 和 30.0.101.1191(不包括在内)之间存在内存泄漏,这dwm.exe在某些情况下会导致内存消耗。在合成器崩溃之前,它已经超过了 19GB(!!)。显然,这种情况不会一直发生,因为我花了几个月的时间才注意到。

截至 2022 年 10 月,Windows 更新仍在分发有缺陷的驱动程序版本。安装英特尔的更新版本将解决该问题。

资料来源:https://www.intel.com/content/www/us/en/support/articles/000058381/graphics/graphics-for-8th- Generation-intel-processors.html


小智 5

我使用这个批处理代码来刷新dwm.exe。会有一秒钟的空白屏幕。该dwm.exe RAM的使用将回复正常

我强烈建议您在执行之前关闭所有应用程序以防止程序崩溃

@ECHO OFF 
taskkill /F /IM dwm.exe 
taskkill /F /IM conhost.exe
Run Code Online (Sandbox Code Playgroud)