记忆已满,但被谁填满?

记忆已满,但被谁填满?

今天,当我打开电脑并登录 Windows(8.1)时,我注意到 HDD 的 LED 持续亮着(没有闪烁),并且 Windows 运行速度慢得令人难以置信,并且滞后严重!

我打开任务管理器(大约有 30 秒的延迟)来查看发生了什么...情况如下:*

在此处输入图片描述

看到 8 GB 内存的使用率达到 98%,这解释了为什么速度这么慢。但是,不合逻辑的是哪个进程占用了内存!所有这些数字加起来可能都达不到 100 MB,更不用说 ~7GB 了!

因此,我还检查了进程监视器,事情变得更加令人困惑:*

在此处输入图片描述

现在有人能给我解释一下吗

  • 那 6.7 GB“修改的”内存为什么那么多?
  • 什么时候发生过这样的事?
  • 有什么解决方案可以释放那么多的 RAM 以使 Windows 恢复正常?

硬件:

AMD FX 6350 | 8 GB 内存 | 1 TB 硬盘


*抱歉图片质量不太好。速度太慢了,我不得不用手机了!

答案1

从第二张图片的顶部来看,我认为问题很可能出在 CoreTemp 上。虽然只使用了大约 20MB 的工作内存,但它存在严重的虚拟内存泄漏,并且占用了 24GB 的虚拟内存。

结果,它可能吸收了系统可用的所有 VM,因此内存管理器无法为新应用程序提供任何内存。

第一个任务:杀死 CoreTemp。

“修改过的”内存通常是等待刷新到交换文件的内存页,这与分配了大量虚拟内存且系统无法将其分页的程序一致。

为了解释提交费用,我们诉诸维基百科

在计算领域,提交费用是 Microsoft Windows 操作系统中使用的术语,用于描述除页面文件外未分配任何后备存储的可分页虚拟地址空间总量。在具有页面文件的系统上,它可能被视为最大潜在页面文件使用量。在没有页面文件的系统上,它仍被计算在内,但所有此类虚拟地址空间必须始终保留在物理内存 (RAM) 中。

本质上,系统的最大提交费用是交换文件可以支持的内存总量。任何进程的提交费用是该程序请求访问的内存量。

但问题是,程序请求的内存可能比系统中实际安装的内存更多,或者比实际需要的更多,这实际上会导致其他进程无法运行。我怀疑这就是本例中发生的情况。CoreTemp 请求了系统中所有可分配的内存,因此内存管理器很难将页面强制发送到磁盘,以便加载新任务。

它可能在分配页面时也遇到了麻烦,我怀疑在这种大小下,这就是你所有的物理分配虚拟(交换文件)内存。

相关内容