为什么 Windows 任务管理器报告的总内存使用量远高于所有进程的内存使用量总和?

Jos*_*osh 124 memory windows-8 windows-8.1

任务管理器显示我的总内存使用量为 6 GB 总内存的 90%,但没有一个进程使用超过 250 MB 的 RAM,并且所有正在运行的进程的 RAM 使用总和小于 2 GB。我试过了:

  • 查看 Windows 8 任务管理器“进程”选项卡上“内存”列中的数字。
  • 查看任务管理器“详细信息”选项卡上的“工作集”、“私有工作集”、“共享工作集”和“提交大小”列。
  • 在 Process Explorer 中查看与内存相关的类似列。
  • 我试过运行 Sysinternals RAMMap,但是当我遇到内存不足的危机时,它在启动时崩溃了。一旦我解决了问题,RAMMap 就可以正常运行了,但那时已经太晚了。

所有这些都显示使用了非常少量的内存。

互联网上有很多人在询问这个问题的变体,以及各种版本的 Windows。他们中的一些人设法解决了内存不足的问题,通常是通过重新安装软件;有时通过从头开始重新安装 Windows。我正在寻找这些问题的答案,这些问题似乎从未在其他地方得到解答:

  1. 为什么总使用内存远高于所有列出的进程使用的内存,无论我如何计算它们?
  2. 在不知道什么程序正在使用内存的情况下,Windows 如何“知道”内存已被使用?
  3. 哪些进程可能会耗尽内存但未显示在列表中?
  4. 是否有任何软件可以提供有关已用内存的更多信息?

特定于我自己的问题的详细信息:自从升级到 Windows 8.1 后,我一登录就会出现问题。我一运行任何程序就会耗尽内存。我在进程资源管理器中注意到 iexplore.exe 的几个实例正在运行,显然是自动启动的。一个特定的实例只使用了几 MB 的 RAM,但显示了数亿个页面错误。一时兴起,我杀死了那个特定的进程,内存使用量立即下降了 70%。

导致一个具体问题:

  • 杀死一个据称只使用几 MB 的进程如何释放几 GB 的空间?

还有一个(可能很难)奖励问题:

  • 除了重新安装 Windows,我如何才能避免每次重新启动计算机时都必须执行此操作?

Dav*_*rtz 7

顺便说一句,你应该尽量不要使用“记忆”这个词。它造成了很多混乱。如果您指的是物理内存,请说“物理内存”或“RAM”。如果您的意思是虚拟内存,请这么说。如果您的意思是后备商店,请说出来。

为什么总使用内存远高于所有列出的进程使用的内存,无论我如何计算它们?

因为操作系统不会浪费物理内存 (RAM),除非它别无选择。

在不知道什么程序正在使用内存的情况下,Windows 如何“知道”内存已被使用?

因为没有程序在使用它。例如,考虑包含刚刚终止的程序的代码的内存。没有程序在使用它。但是该内存已被使用,因为它不是空闲的并且包含可能有用的数据(以防程序再次运行)。

哪些进程可能会耗尽内存但现在显示在列表中?

它不被进程使用。

是否有任何软件可以提供有关已用内存的更多信息?

RAMMap可以做到这一点。

只有两种可能性,可以使用 RAM 或可以浪费它。显然,第一个更好。任何空闲内存都将永远被浪费——一台 4GB 的机器不能为了明天使用 6GB 而今天使用 2GB。如果您在想“我现在想要它免费,以便以后可以使用它”,请忘记这一点。现在,您可以使用它,并在以后使用它。

杀死一个据称只使用几 MB 的进程如何释放几 GB 的空间?

您的后备存储空间不足,而不是物理内存。您有足够的可用物理内存,但没有足够的后备存储供操作系统继续分配可能需要后备的虚拟内存。

该进程只使用了几 MB 的物理内存,但操作系统可能不得不为其保留几 GB 的支持虚拟内存。例如,假设一个进程创建了一个 2GB 文件的可写私有内存映射。操作系统必须为该进程保留 2GB 的支持虚拟内存,因为它可能会写入该映射的每个字节。此外,它可能永远不会写信给其中任何一个。这就是为什么您需要一个大小合适的分页文件的原因。

现代操作系统写了很多永远不会兑现的支票(有前途的后备存储)(需要 RAM)。如果您已经写了一堆可能会或可能不会兑现的大支票(承诺尽可能多的后备商店),即使您在银行中有足够的钱(可用 RAM),您也不能继续写支票(有希望的后备商店)就像你一样)。分页文件添加后备存储,允许操作系统继续写入检查。

  • -1 因为在阅读了答案和所有评论后,仍然不清楚为什么总使用内存比所有列出的进程使用的内存高得多。 (124认同)
  • PS:我使用“内存”这个词不是因为我不知道 RAM 和 VM 之间的区别,而是因为我的计算机只是告诉我它的“内存”不足而根本没有给我任何信息*意思是。*(我认为它的意思是 RAM,因为我在前面的评论中指定的原因,但我不确定。)我宁愿你使用真正的词汇(如有必要,我可以查找)而不是详细的财务比喻:) (21认同)
  • 即使没有程序使用内存,该术语也“使用”了内存,这与“使用”和“免费”等词的正常含义非常不同——也许这是微软的术语,而不是你的术语。无论如何,假设例如,50% 的 RAM 当前被正在运行的程序使用,25% 未被任何正在运行的程序使用,但包含将来可能有用但也可以丢弃的数据。将这些加在一起并显示“内存:75%”不会向用户传达任何有用的信息。我认为这就是广泛存在的混乱的来源。 (9认同)
  • @DavidSchwartz 您的回答并没有解释这一点,它只是说明了这一点。您能否提供任何链接来支持该特定声明?我将“物理内存 XX%”解释为表示物理安装的 RAM 的 XX% 当前正在使用并且不可用于其他进程。我相信我得到了以下事实的验证:超过 90% 的系统容易出现锁定,并且当应用程序尝试分配超过 100% 的内存时,它们会完全崩溃。根据我的经验,这不是大多数系统运行的标准制度。 (3认同)
  • 我还是不明白。如果没有内存不足,为什么它说我的 6 GB“内存”中的 5.5 GB(不是 8 GB,因为我在之前的评论中打错了,抱歉)正在使用中?6 GB 是我拥有的 *RAM* 的大小,它不是后备存储的大小,后者要大得多。如果 Windows 仅承诺运行应用程序 5.5 GB 的分页文件,那么我根本不会遇到任何问题! (2认同)
  • @BennettMcElwee 没有将内存使用量减少到一个简单数字的好方法,但用户坚持这样做。这让开发人员处于一种不舒服的境地——他们可以提供一个并不总是有用的数字或不提供任何数字。大多数操作系统和 GUI 开发人员选择第一个选项——他们提供的数字会导致很多混淆。如果您的问题是“更多的 RAM 会使我的系统运行得更好吗”,那么答案是——即使对于专家来说,也很难说清楚。 (2认同)
  • @DavidSchwartz“……大部分 RAM 也可用于其他用途。” 问题是,在这种情况下,不,事实并非如此。这并不是说我没有足够的可用 RAM,而是我有太多不可用的 RAM,而且我的操作系统专门告诉我这一点,而不是相反。我同意,根据“免费”的更严格定义,你是准确的。但这不是 Windows 任务管理器的这一部分所报告的定义。你用的是Windows吗?打开TM,告诉我你的底部的物理内存是怎么说的。如果您使用的是 Linux,请告诉我“Mem”行从 top 命令中读取的内容。 (2认同)
  • 我是说你是不正确的,没有在听。我告诉你系统处于内存压力之下,它变得不稳定并且无法启动新的应用程序。但这还不是重点,重点是你不愿意考虑我的观点。你只是一遍又一遍地重复同样的陈述句,好像我根本不明白你之前说的话。我正在尝试进行对话,并且正在接受有关与手头问题无关的主题的讲座。 (2认同)
  • 我的这个问题的版本是“为什么我的 7gb 报告的进程使用情况与 13gb 报告的内存使用情况不同”使用 RamMap(之前链接)我发现我对这个问题的答案是“2gb 驱动程序锁定,3gb 分页+托管池,1gb 可共享, 2gb“映射文件”,最后 5gb 进程私有,总共 13gb“已用物理”。每个进程的其他报告方式仅获取 5+1 私有+共享,并且不考虑这些额外的已用内存情况。 (2认同)

归档时间:

查看次数:

222995 次

最近记录:

8 年,1 月 前