当我有足够的可用内存时,为什么 Windows 10 会压缩内存?

fos*_*ndy 7 memory-management windows-10

(编辑:我被要求解释为什么我的问题不是这个问题的重复。我认为通过阅读这两个问题,原因会很明显,但总结一下:我没有内存泄漏。我确切地知道是什么使用我的内存。我想知道为什么 Windows 选择压缩我的内存(因此使用 CPU 周期并使我的系统缓慢且无响应),而我的系统似乎有足够的内存来将整个应用程序占用空间存储在未压缩的内存中。)

我使用定制且占用大量内存的应用程序进行了大量科学/工程计算模拟。也许不是 8tb 超级计算机意义上的内存匮乏,而是“不仅仅是单词/电子邮件/youtube,甚至 chrome”意义上的内存匮乏。从历史上看,我的工作集占用了 4-30 GB 的 RAM。

自从周年更新以来,我的机器遇到了严重的性能问题,在调查过程中我注意到 Windows 似乎相当积极地压缩内存。例如,当打开特定模型时,我会遇到以下情况:

在此输入图像描述

只是总结一下该屏幕截图中的相关要点:

  • 已使用 15388 MB 内存
  • 6855 MB 压缩内存
  • 如果未压缩,则将使用 16657 MB
  • 16.6 GB 可用内存
  • 总共 32 GB 内存

简而言之:如果我不压缩,根据我的理解,我的内存需求将是 15388-6855+16657 = 25190 MB。这小于我的可用内存。

我经常注意到,在响应速度降低的时候,我的 CPU 会消耗一些周期来进行内存压缩,如下所示: 在此输入图像描述

我知道内存使用的概念非常模糊,因为诸如共享页面、保留内存、写入时复制等功能,但对我来说,这种情况看起来只是不必要地浪费 CPU 周期和系统响应能力。我的愿望是不执行任何内存压缩,而是使用可用的 RAM。

我的问题是:

  • 我是否误解了 Windows 10 的行为(因为当前的行为似乎不合理)?
  • 自周年更新以来,内存压缩的行为/策略是否发生了变化?我问这个问题是因为自更新以来我才开始遇到这些性能问题。
  • 有没有办法禁用内存压缩?我已经尝试过这里描述的技术,但没有任何运气。

完全披露:这个问题的一个版本已发布到微软论坛,但只收到预设回复,所以我在这里重新发布。

Igo*_*cki 6

如果我想尖酸刻薄的话,你的问题的答案将是“因为微软的一种方式”,这似乎是他们的理念,而不仅仅是他们在雷德蒙德的公司总部地址。

简而言之,微软开发人员相信他们最了解我们的计算机应该如何配置和使用,他们会不惜一切代价将他们的“一刀切”选择强加给我们所有人。

内存压缩就是一个完美的例子。

我有一个具有 64 GB RAM 和 1 TB NVMe SSD 的工作站,并且我正在使用一个 3D 应用程序,该应用程序使用大量 RAM 来存储资产。当启用内存压缩时,所述 3D 应用程序在加载这些资源时速度明显变慢,其 UI 响应速度较差,并且开始渲染需要更长的时间,因为操作系统必须先解压缩刚刚压缩的数据,然后才能将其发送到视频 RAM。

然而,即使在像我这样拥有大量 RAM 和快速 SSD 驱动器的系统上,内存压缩不仅默认启用,而且如果你敢禁用它,它会在每次 Windows 10 功能升级后重新启用(我禁用了它,并升级到 Windows 10 20H2 再次启用它)。

所以我认为启用内存压缩的真正原因是微软工作人员的傲慢和无知。

  • 这里正确的答案是仅在存在内存压力时才执行内存压缩。否则系统只是无缘无故地使用更多的 CPU/能量。如果这不是它的实现方式,那就是一个真正的错误。 (4认同)
  • 这是一个咆哮,而不是一个答案。 (3认同)
  • @gronostaj 这是一个准确的观察和一个完全可以接受的答案。 Windows 会压缩内存,因为默认情况下启用压缩。它是默认启用的,因为 Microsoft 开发人员和产品经理错误地认为它会提高每个人的性能。然而,RAM 中的数据需要解压缩才能使用——您无法将其压缩发送到 GPU、磁盘或通过网络,因此在任何具有 8 GB 或更多 RAM 的系统上这都是资源浪费。但是,如果您有更好的答案,请随时提供。 (3认同)

归档时间:

查看次数:

10084 次

最近记录:

4 年,1 月 前