![我不明白内存使用情况](https://linux22.com/image/1533102/%E6%88%91%E4%B8%8D%E6%98%8E%E7%99%BD%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5.png)
这是正常的 RAM 使用情况吗?我有单通道 ddr2 RAM,系统配置中的最大内存已关闭。我不明白为什么我有 5.7GB 可用,有时空闲时只有 4GB。系统信息和 BIOS 说我安装了 8GB,所以没有问题。RAM 使用率通常在空闲时约为 27% 到 30%,而 CPU 使用率为空闲时为 1%。而游戏 RAM 使用率为 60%。
现在我想知道可用和使用中到底是什么意思。一切似乎都很好,但我不明白 Windows 向我呈现的信息。
答案1
Windows 实际上有两种类型的“可用”内存:
- 空闲:内存中实际上没有任何类型的数据,可以立即使用。
- 可用:这代表可用内存和缓存内存。
自从Windows Vista,Windows 实际上会尝试将一些文件预加载到内存中,以便以后可以更快地访问,它是缓存的内存。
不用担心,你的内存使用情况非常好。
答案2
tl;dr 版本:Windows 在空闲系统上显示为“正在使用”的 RAM 数量几乎总是没有实际意义的。
首先,让我们解释一些标签,看看事情进展如何,或者不进展:
从资源监视器屏幕截图中可以看到...“可用”是指可立即分配以解决页面错误所需的 RAM。“可用”是“待机”和“空闲”的总和。这是因为“待机”内存与“空闲”内存一样可立即使用。
因此,待机 1211 MB + 可用 4709 MB = 可用 5920 MB。这样就行了。
任务管理器中的“正在使用”大约等于“总计”减去“可用”。总计 8147 - 可用 5920 = 2227 MB。这与任务管理器显示的“正在使用 2.2 GB”相符。
(请记住,要从 MB 转换为 GB,您需要除以 1,024,因为 Windows 愚蠢地使用 SI 前缀来表示 1024 的幂。)
任务管理器的“缓存”计数器很棘手。它是待机页面列表的总和(如上所述,它包括 SuperFetch 缓存和虚拟内存页面缓存)加反应文件缓存...它是内核地址空间的一部分,是可分页的,并且也包含在“使用中”计数器中。
因此,如果你想弄清楚“我的内存都到哪里去了”,在总和中包含“缓存”是错误的;这样做会使您得到的总数过大,因为您将两次计算待机列表和“正在使用”的部分。(有时它给出的总数大于总 RAM!)
顺便说一下,还有另一个列表,“零”或“已归零”页面列表,资源监视器显示仅将其包含在“可用”中;对于大多数“我的 RAM 在哪里”问题,“可用”和“已归零”之间的区别并不重要。
我不明白为什么我有 5.7GB 可用空间,但空闲时却只有 4GB。
Windows 是一个按需分页虚拟内存操作系统。“按需分页”意味着代码和数据页面通常不会进入 RAM,除非它们被引用。每次引用不在 RAM 中的页面时,必须从“可用”列表(清零、空闲或待机)之一中删除一个 RAM 页面,并将其分配给需要它的进程。然后,它会被计为“正在使用”,并计入进程“工作集”。(页面为 4 KB。)
如果该序列表示从磁盘(或 SSD)读取,则该序列为“页面错误” - “硬页面错误”。我们称该页面已“调入”。
(实际上,许多页面错误无需转至磁盘即可解决。这些被称为“软页面错误”。不用说,这比转至磁盘要快得多。通常,它们被解析为待机列表中的页面 - 这就是我之前提到的“虚拟内存页面缓存”功能。这里就不深入讨论了。)
但是术语“按需分页”也适用于物理内存 (RAM) 的分配。页面错误率高 + CPU 时间多(即对 RAM 的需求高)的进程将被允许使用更多 RAM;不太繁忙的进程的工作集将被缩减。如果可用 RAM 充足(如您描述的情况),进程通常被允许将内容错误地存入并保留 - 因为,如果 RAM 充足,为什么不呢?
但是,如果对 RAM 的需求增加并且可用 RAM 变得稀缺,那么以前臃肿的进程将被修剪,以便为最近繁忙的进程提供更多的 RAM。
当然,您知道现代操作系统从来不会完全闲置吗?总是有后台维护任务,它们需要 RAM 才能运行。如果有足够的 RAM(就像您的机器上一样),它们将被允许使用相当多的 RAM,不是因为它们“需要那么多”,而是因为没有其他需要它运行的程序。但是,如果您随后运行一个占用大量 RAM 的程序,这些后台进程将被放回原位,这样您就可以为您正在处理的任务提供更多的 RAM。
因此,看到空闲的 Windows 系统并说“哦,Windows 在空闲时占用了 x 量的 RAM!”是错误的!x 很大程度上取决于总共有多少 RAM,多久它一直处于空闲状态,你安装了什么东西给系统添加了各种“空闲任务”,甚至它正在做什么前它处于闲置状态。因此,不同系统之间的差异很大。
系统上“空闲时使用 x 量 RAM”的观察结果也不意味着 Windows 会在您启动 RAM 密集型程序时为自己保留那么多 RAM。它只是意味着在当前条件下,受最近发生的许多事情的影响,它现在使用了这么多 RAM。