如果有帮助,资源监视器会将所有其他RAM描述为“备用”
正在使用“备用” RAM 。它被用作页面缓存(它保存了所有进程工作集中最近丢失的页面;即,可以解决这些页面错误而无需进入磁盘),还可以用于SuperFetch的主动文件缓存。
之所以认为它是“可用的”,是因为不必将备用页面分配给磁盘,然后才能将它们分配给其他用途。比如当一个进程击中一个页面错,确实需要从磁盘读取,新的物理页面(一个或多个)必须分配给该进程,并在必要时这些都可以从备用列表中提取。(这不是为此目的查找页面的首选,而是免费页面,然后是零页面列表。)
换句话说,您的系统正在正常运行。
您可以通过命令行工具testlimit
(Windows Internals实验中使用的工具之一),强制系统使更多的RAM轻松进入“使用中”状态。它不是常规sysinternals工具的一部分,但与它们相关联。发现这里的Sysinternals的网站。下载是一个zip文件,其中包含两个版本:testlimit.exe和testlimit64.exe。两者都链接到可识别大地址的地址,因此32位版本将能够在以/ 3GB引导的32位计算机上最多分配3 GiB,在64位计算机上最多分配4 GiB。
c:\> testlimit -?
提供帮助。
c:\> testlimit -d 4 -c 512
将尝试在每个4 MiB的512个分配中分配2 GiB的进程专用虚拟地址空间。这在64位计算机上应该可以正常工作。在未使用/ 3GB引导的32位计算机上(大多数不是),它可能会更早出错b / c,在此过程中已经存在一些MiB内容(例如程序本身,所有DLL等),因此没有足够的2 GiB可供程序分配。
在这两种情况下,“可用” RAM都会减少,“使用中” RAM会增加,但是不一定要2 GiB的价值,因为不能保证操作系统将所有2 GiB留在进程专用工作集中。即使在短期内做到了这一点,您也可能会看到该进程的工作集以后会减少,因为OS决定“ hm,您实际上并没有对其进行任何操作,其他进程则需要更多”并进行分页。
过多增加分配“块”的大小,从而减少块的数量,并且由于每个分配实际上必须是连续的,因此有可能很快失败。例如,尝试在4 GiB地址空间中找到七个512 MiB块,您很可能会失败。
如果使用l(eak)选项而不是d(irty),则程序将分配虚拟空间,但将永远不会引用它。这不会导致“可用” RAM明显减少。
(d(irty)选项的名称来自x86 / x64页表条目中的“脏页位”,该条目是在使用“修改”样式的操作数访问相应的虚拟页时设置的,这意味着该页的内容具有Windows的指示,如果必须将页面从流程工作集中逐出,则必须将页面的内容保存在该页面可以用于其他用途之前。逐出后立即显示“修改后的页面列表”; Windows将从那里将它们写入各自的后备存储。)
您将需要有足够的“提交”来使这些测试如上所述工作(即使使用l(eak)选项,即使该选项不使用任何数量的RAM也是如此)。具体来说,在开始测试之前,您的“提交限制”至少应比“提交费用”至少高2 GiB(或您分配的数额)。请注意,即使您使用l(eak)选项,而不仅仅是d(irty),这也适用。如果遇到此限制,您将看到“系统内存不足”弹出窗口或类似的弹出窗口。当然,解决方法是添加更多RAM和/或增加页面文件设置。