Answers:
那取决于休眠的实现。即使将问题限制在Linux上,实现也会随着时间而发展。
首先,请考虑将某些RAM用于磁盘缓存。无需将其移至交换,因为可以在系统恢复后从磁盘重新加载它。在具有良好成本/效率平衡的系统上,通常会将大约一半的RAM分配给缓存。(另请参阅为什么在有足够多的RAM时使用swap。)在Linux中,某些早期的实现会将所有分配的内存存储到swap中,但是休眠的当前实现会跳过磁盘缓存。
其次,某些系统在将内存写入交换时会对其进行压缩,这可能会使所需交换的确切数量难以预测。某些版本的Linux休眠支持已支持压缩。我不知道目前的情况是否如此。
如果没有足够的交换空间,通常可以期望的是休眠将失败:系统将尝试将RAM的(有用)内容存储到交换中,并且一旦检测到没有足够的空间,休眠尝试将中止(通常在控制台和系统日志中显示一条错误消息)。据我所知,Linux一直都是这样(不是真的存在另一种明智的行为)。
/var/log/kern.log
。我不知道控制台上是否没有消息是该特定内核版本的怪胎还是故意的Ubuntu配置(我知道他们已经故意抑制了其他控制台输出)。