我在 Windows 10 上遇到了问题:我会定期收到“内存不足”警告。很多超级用户关于此主题的问题都涉及驱动程序内存泄漏,但正如我将在下面解释的那样,我的内存泄漏并不符合这些标准。通常情况下,随着“系统和压缩”内存的增长,我的页面文件大小会达到约 70-80 GB。最终,我会开始收到内存不足警告,直到我重新启动,然后我会在 5-8 天内恢复正常。
很多人抱怨系统和压缩内存增长到导致问题的程度,但不幸的是,其中的常见原因(驱动程序内存泄漏)似乎并不是我立即遇到的问题。
首先,Windows 10 内存使用率过高(原因不明)涵盖了一个常见问题。但是,请注意,该场景中的一个关键指标是“非分页”内存使用率很高。在我的场景中,非分页内存的使用量并不大;我有 16 GB 内存,我可以有 8-9 GB 的“系统和压缩内存”和不到 1 GB 的非分页内存。
我链接到的问题建议使用 PoolMon 工具。我已经这样做了。我观察到的高 Nonp 进程是带有标签“Thre”和“Py28”的进程,据我所知,这些进程是不是驱动程序(关于 Windows 10 中系统内存使用率过高的大部分问答都会指出驱动程序泄漏)。
我的问题的另一个症状是系统运行的时间越长,页面文件就越大。例如,在上次重新启动之前,页面文件的大小约为 60 GB。另请注意,我在任务管理器屏幕上看到的“已提交”值经常在“12.3/50-60 GB 范围内”。我不知道这是否正常。但我的页面文件变得这么大至少对我来说似乎“很奇怪”。
编辑:让我在这里澄清一下我的问题。我问的是,“当系统和压缩内存似乎掩盖了根内存占用时,我如何知道哪个应用程序占用了这么多的系统内存。”请注意,我有一个页面文件,大小高达 80 GB 左右,没有一个应用程序的内存使用率很高,只有“系统和压缩内存”系统进程。在旧版本的 Windows 下,我知道如何判断哪些应用程序使用了这么多内存,但现在没有一个应用程序显示异常内存使用。我不知道这是因为系统和压缩内存“很有帮助”并帮助管理内存,以便系统可以运行更长时间而不会耗尽内存,还是什么,但我知道我的系统内存不足,而且没有任何应用程序在任务管理器中显示异常内存使用。我问的是如何找出导致这种情况的原因。我发现最接近的答案是使用 PoolMon 并寻找使用大量非分页内存的有问题的驱动程序,但与遇到驱动程序内存泄漏的人不同,我的非分页内存使用率从来都不是很高,并且当我运行 PoolMon 时,没有任何驱动程序被列为高内存用户。
答案1
这是一个新的Windows 10 的功能以减少分页。因此,Windows 10 不会将数据写入页面文件,而是对其进行压缩并将其存储在系统进程中。
在 Windows 10 中,我们在内存管理器中添加了一个名为压缩存储的新概念,它是内存中压缩页面的集合。这意味着当内存管理器感受到内存压力时,它会压缩未使用的页面,而不是将它们写入磁盘。这减少了每个进程使用的内存量,允许 Windows 10 一次在物理内存中维护更多应用程序。这也有助于在 Windows 10 中提供更好的响应能力。压缩存储位于系统进程的工作集中。由于系统进程将存储保存在内存中,因此当内存可供其他进程使用时,其工作集会变大。这在任务管理器中可见,也是系统进程似乎比以前的版本消耗更多内存的原因。