当有空闲的物理内存时虚拟内存会用完吗?

当有空闲的物理内存时虚拟内存会用完吗?

我的 Firefox 突然变得很慢,然后就卡住了。我打开 Process Explorer 查看发生了什么,发现 Firefox.exe 的主线程卡在了内核函数中NtAllocateVirtualMemory。当时,该进程只使用了 1.5GB 的虚拟内存空间,而我有超过 1GB 的提交限制可用,并且至少有 1GB 的可用 RAM。我想 Firefox 的内存空间可能变得太碎片化了,所以我把它杀了。

然后我得到了如下所示的惊喜图表。

截屏

如您所见,在整个期间一直有 RAM 可用,但我似乎无论如何都达到了提交限制。页面文件设置为系统管理,系统驱动器有超过 17GB 的可用空间,所以我不知道我怎么会达到限制……对此有什么想法吗?

系统是 Windows 10 build 10586。我有 8GB 的​​ RAM。

(似乎 Firefox 或某些相关程序占用了隐藏的 3-4 GB 虚拟内存空间。我认为可能是显示驱动程序,但为什么系统没有扩展页面文件?)

答案1

物理内存和提交限制是不同的资源。即使您还有足够的剩余资源,您也可能用完其中一个。您很可能需要更大的页面文件来提高提交限制。

物理内存非常像银行里的现金。提交限制非常像您已经开出的支票。即使您在银行有很多现金,如果您已经开出了很多支票,您可能无法再开出更多支票。

假设您的系统有 3GB 的可用 RAM,但没有页面文件。假设某个应用程序请求 2GB 内存。系统将回答“是”,并将提交限制提高 2GB。系统仍然有 3GB 的可用 RAM,因为该应用程序尚未使用任何内存。但如果另一个应用程序请求 2GB 内存,操作系统将不得不拒绝。它有 3GB 的可用内存,但已经开出了 2GB 的支票,因此它不能再开出 2GB 的支票。

相关内容