我看到很多建议声称,对于休眠,交换分区/文件必须至少与主内存一样大。这对我来说毫无意义。假设我有 8 GB 的主内存和 8 GB 的交换区域,并且想要休眠:
- 情况 1:我正在使用 4 GB 的虚拟内存 -> 8 GB 的交换内存不必要地大。
- 情况 2:我正在使用 8 GB 的虚拟内存 -> 8 GB 的交换内存正好合适。
- 情况 3:我正在使用 12 GB 的虚拟内存 -> 8 GB 的交换内存太小了。
结果是:大小等于内存大小的交换区域足以满足休眠要求,如果它根本不用于交换。那么,声称休眠模式至少需要与主内存一样多的交换区域才能工作的理由是什么呢?
我知道虚拟内存也用于缓存,并且缓存可能会被简单地丢弃,但是如果程序分配了 12 GB 的虚拟内存,休眠会发生什么情况(给定上述内存和交换大小)?
答案1
其实很简单,
休眠时,系统会将 RAM 中的所有内容保存到磁盘,如果空间不足swap
,系统会发出警告,不允许您休眠。为避免这种情况发生,最好至少拥有swap
与 RAM 相同的空间。在大多数情况下,您不需要更多空间,因为大多数应用程序几乎从不占用足够的 RAM 来swap
承受高负荷。
但是,如果您的 RAM 容量较小,或者您使用的应用程序相当繁重,您可能需要将 RAM 大小增加一倍,swap
以容纳休眠时需要写入的内存。