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