所以这是一个有趣的场景。我有 16GB 的 RAM,但发现 Windows 不知何故创建了一个 64GB 的页面文件。我认为这太过分了,所以手动将其限制为 16GB。
一切似乎都运行正常。我设置了我的 c++ 研究代码来运行一些测试,并开始在 chrome 上观看视频。我打开了 4 个标签。我的代码使用稳定的 2GB,并且我的 RAM 使用率正常情况下为 60-70%。然后 Chrome 崩溃(意外异常代码 0x000008)。在我点击退出错误窗口后,我的两个显示器都变黑了。Chrome 崩溃了,Visual Studio 出现“chrome 崩溃”错误,我的代码停止了。此外,我第二台显示器上的所有窗口都变黑了。
此后,我的电脑变得 100% 不稳定。我的一台显示器切换到 Windows 基本驱动程序。非常奇怪。我重置了。打开的东西更少了,只是在代码运行时继续观看我的东西,希望这只是一次性的事情。十五分钟后,又一次崩溃。这次 Visual Studio 实际上没有崩溃,但执行窗口变得不可见,就像在第二个显示器中一样。
我进入 chrome 转储只是为了检查它是什么...果然第一行给出了:STACK_TEXT:
00000000`00000000 00000000`00000000 chrome.exe!out_of_memory+0x0
现在……此时我重复整个场景,同时盯着我的 RAM 使用情况。果然,崩溃发生在我的 RAM 使用率为 50% 时。所以,似乎当我用完虚拟内存时,即使我的物理内存绰绰有余,Chrome 也会崩溃?为什么?为什么它会以如此灾难性的方式崩溃,毁掉其他程序?
果然,当我将虚拟内存重新设置为由操作系统管理时,崩溃就停止了,但我仍然对整个情况感到好奇。
答案1
这可能是由于页面文件中的设置导致的,称为优先事项。优先级设置决定程序是否被分配真实内存或虚拟内存。默认情况下,前台进程获得真实内存,但这可以更改。如果是这种情况,那么 Chrome 和 Visual Studio(它们已经占用了内存)会给您的磁盘带来压力,而其他程序会继续使用您的磁盘。
Chrome 崩溃时会调用其错误报告器,而 Windows 则会调用单独的崩溃报告器。这会进一步增加磁盘压力,因为这些程序会创建一些文件。
这可能会导致页面文件系统崩溃,因此系统会变得无响应,您会看到空白屏幕。页面文件系统崩溃意味着使用页面文件的应用程序也会崩溃。
不 - 这些程序实际上并不是因为内存不足而崩溃,而是因为磁盘使用量超出了其限制