为什么 Windows 关闭时程序有时会报告内存不足错误?

为什么 Windows 关闭时程序有时会报告内存不足错误?

这不是一个问题,只是我好奇的事情 - 而且我只在 Windows 7 上测试过它。

当我关闭计算机(或其他程序发送关闭请求)并且直到工作站实际关闭时,各种程序经常会报告内存不足错误。例如,当我在这段(短暂)时间内打开新选项卡时,我的浏览器(Opera)会显示此类错误。在 .NET 上运行的程序OutOfMemoryException在这段时间内被要求执行一些“繁重”任务时也会抛出错误。

我觉得这有点意思。为什么错误?这实际上是另一个错误,只是被误报了?操作系统在关闭时是否会停止响应进一步的内存请求?它甚至可能收缩分配给该进程的逻辑地址范围,然后再全部收回?

答案1

当系统处于关机模式时,它可以拒绝向程序授予额外的内存分配请求。通常,程序会将此记录/报告为内存不足,但真正的原因是操作系统正在关闭并清理已分配的资源,而不是提供更多资源。

正如您所观察到的,这不是一个“真正的”问题,只是一个时间问题……Opera 试图在系统关闭的同时获取一些额外的内存。据推测,这种情况发生是因为 Opera 在发出资源请求之前尚未收到或处理系统关闭消息。

相关内容