大家好,有时我会运行 Photoshop 以及大量 Chrome 标签和其他一些程序,我的内存看起来很接近我的 7.99 GB 虚拟内存。
我想知道当程序分配的内存超过我的虚拟内存允许的内存时会发生什么?这是否意味着我的电脑本身就会出现 BSOD?
或者我能否保证即使需要额外内存的程序崩溃,操作系统也会稳定(没有 BSOD)?
答案1
根据操作系统及其配置以及可能的其他因素,将发生以下情况之一:
- 操作系统将增加分页文件的大小并将未使用的进程移至其中。(Windows 将执行此操作;Linux 不能,因为出于历史原因,它通常使用固定大小的分区。)
- 操作系统将开始终止其他进程以释放内存。(Linux 或没有页面文件的 Windows 执行此操作。)
- 操作系统将终止有问题的进程。
- 内存分配将会失败,导致进程迟早崩溃(不确定是否有任何操作系统会这样做)。
简单的内存耗尽不应该导致 BSOD,这只适用于不可恢复的情况。
答案2
虚拟内存受页面文件最大大小的限制。默认情况下,虚拟内存由操作系统管理,并会根据需要增长,因此只有在硬盘已满时才会用完。
您可以检查是否正在使用这些设置,或者是否已通过以下方式更改它们
Right-Click on my My-Computer and select properties.
Advanced system settings.
Advanced
Settings (on performance section)
Advanced
Change (on Virtual Memory section)
当 Windows 接近限制时,它会显示警告并建议您关闭一些使用最多内存的程序。
如果您忽略这些错误并且您的系统继续使用更多内存,那么最终某些程序将尝试分配内存,但会失败。接下来会发生什么取决于程序,即如果程序是专门为应对被拒绝的请求而编写的,它将干净地失败,否则它可能会崩溃。
例如,如果您尝试在 PhotoShop 中打开另一个大文件,它可能会显示一条消息,说无法打开它,因为系统内存不足,但仍允许您继续处理正在处理的文件。但是,如果内存完全用完,您可能没有足够的空间来显示此消息,也可能没有足够的空间在您尝试关闭时显示询问您是否要保存文件的消息。
因此,根据我的经验,当你到达这一点时,有太多事情会严重失败,你真的应该注意警告,但即使你忽略它,你也不应该期待 BSOD。