为什么我不运行任何程序时内存使用率为 65%?

Mar*_*tin 5 memory windows acer-aspire memory-usage

我不知道为什么即使我没有运行任何程序,我的内存仍显示 65% 使用率。

有时它会被卡住。

我的笔记本电脑规格:

Acer Aspire VX 15
操作系统:Windows 10 x64 最新更新
RAM:24GB DDR4 2400
SSD:512G​​B
HDD:1TB
CPU:corei7 第 7 代 7700HQ 2.8
显卡:GeForce GTX 1050Ti GDDR5

流程截图

流程截图

演出截图

RAMMap 截图

RAMMap 截图

Bob*_*Bob 7

tl;dr:从FindZombieHandles下载所有 5 个文件,运行它,看看哪个进程正在创建所有这些僵尸。

\n
\n

您注意到这个问题是正确的。1

\n

有几个常见原因:

\n
    \n
  • 句柄泄漏,尤其是 GDI 对象的句柄泄漏
  • \n
  • 句柄泄漏,导致僵尸进程
  • \n
  • 驱动程序锁定内存,这可能是由于有错误的驱动程序甚至是正常操作造成的(例如,VMware 膨胀会故意“吃掉”您的 RAM,以尝试在虚拟机之间平衡它)
  • \n
\n
\n

获取更多信息

\n

现在我们能做的第一件事就是使用优秀的RAMMap工具,它将识别内存使用情况所属的大致类别。这些不一定会告诉您它是什么,但确实会为您提供下一步查看位置的建议。

\n

对于您的具体情况,我会参考您提供的屏幕截图。您想要查看Active\xe2\x80\x94 列,该Standby列包含属于“可用”内存的缓存。注意Page Table非常高 \xe2\x80\x94 我预计它会在 512 MB 以下,不会超过 2 GB!

\n

缩小范围

\n

从这里我们可以猜测:这很可能是由于僵尸进程造成的。当一个进程启动另一个进程(该进程持有已启动进程的句柄)时,Windows 中可能会出现僵尸进程。当启动的进程退出时,启动进程应该释放这些句柄。当这种情况未能发生时,只要启动过程存在,它们就会一直存在。

\n

我们实际上可以在 RAMMap 的 Processes 选项卡上得到进一步的确认。请注意,在您的情况下,按进程名称排序,周围有成千上万tasklist.exe实例。powershell.exe事实上,任何私有内存使用量0 K都是一个危险信号,表明进程已结束但仍然处于僵尸状态。

\n

现在,您需要找出哪个进程正在创建所有这些僵尸。有几种方法可以做到这一点。您可以使用“详细信息”选项卡上的任务管理器并添加“句柄”列。任何持有大量僵尸进程的进程也会打开过多的句柄。您还可以使用Process Explorer查看特定进程已打开的句柄。

\n

然而,到目前为止,最简单的方法是使用FindZombieHandles 2(您需要将所有 5 个文件下载到同一目录中)。如果您运行此工具(以管理员身份),它应该告诉您哪个进程正在创建并持有所有这些僵尸进程。从那里,您可以终止进程、卸载应用程序或向开发人员报告。

\n
\n

1正如我在其他地方解释的那样,任务管理器的“进程”选项卡显示不包括磁盘缓存的内存使用情况,因此“空闲 RAM 浪费”的常见 (Linux) 解释通常不适用。就任务管理器而言,磁盘缓存是可用内存的一部分。没有提及“空闲”内存。

\n

2非常感谢Bruce Dawson提供的这个工具。

\n


小智 -2

...根据此屏幕截图,您正在运行至少 11 个程序,并且您还没有禁用“搜索索引”或“桌面窗口管理器”。或者可能是任何其他服务等以及 msconfig 条目和动画等。