当 Windows 中内存不足 (RAM) 且分页被禁用时会发生什么?

当 Windows 中内存不足 (RAM) 且分页被禁用时会发生什么?

是否会出现任何错误消息或者应用程序是否会崩溃?

我看到了以下消息:

...exe 遇到问题,需要关闭。我们对此造成的不便深表歉意。

这种情况往往发生在系统负载较大时。我尚未能够监控任何确切的内存使用情况。

这是 Windows XP SP3,版本 2600。

答案1

为了安装 Windows 和/或启动 Windows,一定数量的内存是必需的。如果内存不足,Windows 将无法安装。但是,如果您有足够的内存,安装 Windows,然后删除内存,Windows 将无法启动。

也就是说,假设您有足够的内存来运行 Windows,但是您启动的一个程序所需的内存比 Windows 的内存还要多?

嗯,会发生什么取决于一些事情。

程序员是否正确使用了 Windows API 调用来管理内存?如果是,程序在尝试执行某些任务时应该只显示一条错误消息。如果加载程序本身超出内存,则程序很可能在启动时崩溃,并显示“此程序意外终止。向 Microsoft 发送错误报告”

但是,如果程序员没有使用微软 API 调用,那么它就决定了程序员对可能出现的内存问题进行预测以及测试程序以发现内存问题的能力。如果程序员没有添加针对任何内存问题的检查,程序就会崩溃,或者根据程序员的操作,甚至可能导致 Windows 本身崩溃。

诸如 C++ 之类的编程语言允许直接内存管理,并且功能强大到足以在未经适当检查的情况下插入代码时导致窗口崩溃。

Windows 确实具有某些内置保护功能,以 BSoD 的形式,但这仍然会导致崩溃。

答案2

首先,您无法在 Windows 上禁用分页。我猜您的意思是没有分页文件。答案是——没有发生任何异常。这是一种完全正常的情况。

当 Windows 内存不足并且需要内存来执行某些操作时,它会执行以下操作之一:

  1. 干净页面只是信息的副本,如果需要,可以从磁盘再次检索,这些页面将被丢弃。这样可以产生更多可用页面。

  2. 包含文件修改副本的脏页被写回到磁盘,从而使页面变得干净,允许它们也被丢弃。

通常,系统会有第三个选项——可以将不包含文件修改副本的脏页写入页面文件,从而允许它们也被丢弃,但如果没有页面文件,则该选项不可用。这往往会导致性能严重下降,因为系统内存中会堆满从未访问过的脏页。

与大多数现代操作系统一样,Windows 通常几乎一直处于 RAM 不足的状态。如果不是 RAM 不足,它的磁盘缓存就会比应有的要小,从而导致不必要的 I/O 操作。

答案3

内存不足警告和错误意味着提交费用已达到提交限制。这与可用 RAM 不足无关。即使有足够的可用 RAM,也会出现错误。

提交限制是 RAM 大小 + 页面文件大小 - 开销很小。如果没有页面文件,它将略小于 RAM 大小。对于许多常见工作负载,即使有 4 GB RAM,也可能不够。

最好的解决方案是启用页面文件,最好设置为系统管理。

相关内容