当计算机进入休眠模式时,它将 RAM 的内容保存到交换空间中,以便在重新启动时可以准确地恢复到上次中断的位置。
那么,如果您当前使用的内存多于 RAM,该怎么办?在这种情况下,一些原本位于 RAM 中的数据将被保存到交换区中。
一个例子。计算机有 1GB RAM 和 1GB 交换空间。目前它仅使用了 100MB 的 RAM 和 500MB 的交换空间。因此,它需要记住大约 1.4GB 的内存来保存其状态。然而,交换区只有 1GB。
在这种情况下会发生什么?
~~编辑~~
如下回答,休眠失败。那么接下来的问题是:
当失败时,错误报告在哪里?
答案1
这取决于休眠的实施。即使您将问题限制在 Linux 上,其实现也会随着时间的推移而不断发展。
首先,考虑一些 RAM 用于磁盘缓存。不需要将其移至交换区,因为系统恢复后可以从磁盘重新加载它。在具有良好成本/效率平衡的系统上,通常将大约一半的 RAM 分配给缓存。 (也可以看看当内存绰绰有余时为什么要使用交换区.)在Linux下,一些早期的实现会将所有分配的内存存储到交换区中,但当前的休眠实现会跳过磁盘缓存。
其次,某些系统在将内存写入交换区时会对其进行压缩,这可能会导致难以预测所需的确切交换量。 Linux 休眠支持的某些版本已经支持压缩;不知道现在的有没有。
如果没有足够的交换空间,您通常可以预期休眠会失败:系统将尝试将 RAM 的(有用)内容存储到交换空间中,并且一旦检测到没有足够的空间,休眠尝试被中止(通常在控制台和系统日志中显示错误消息)。据我所知,Linux 一直都是这样的行为(并不是说真的有另一种明智的行为)。