交换空间耗尽是什么意思?

Bub*_*les 2 linux ubuntu operating-system

在 Linux 机器上的许多场景中,我们可能会遇到“Running out of swap”错误。到底是什么意思。是不是和殴打很像?空间耗尽和交换空间耗尽是相似的术语吗?我们如何才能找到修复此类错误的方法?

uml*_*ute 5

swap是 RAM 的辅助(基于磁盘)存储:如果您的应用程序消耗太多内存,RAM 的某些部分将被换出 (移动)到硬盘上,以便为新的内存请求腾出空间。(这是在假设近期内不再需要换出的内存的情况下发生的;如果应用程序需要再次访问它,内存将再次换入(移回 RAM),可能会触发首先换出另一个内存区域)。

交换通常相当慢,因为它涉及在 RAM 和硬盘之间移动较大的数据块,并且所有应用程序都必须等到交换完成才能继续。因此,它是一种安全措施,以避免内存不足崩溃,但您应该尽可能避免触发交换。

现在交换空间本身可以是一个文件或整个分区,但在任何情况下它们的大小也有限(由它们所在的分区大小定义,或由操作系统限制)。

因此,如果您需要换出大量内存(或交换空间很小),您迟早会用完 swap

基本上有两种方法可以“解决”该问题:

  • 让你的交换空间更大
  • 使您的应用程序消耗更少的内存

扩展交换空间

  • 首先,尝试为您的系统添加更多 RAM。RAM 越多,系统需要换出内存的可能性就越小。

如果这没有帮助(或不可能),您可能需要扩展实际可用的交换空间:

  • 首先使用创建一个新的交换区域(文件或磁盘分区)mkswap
  • 然后使用 启用交换空间swapon
  • 您还可以通过向文件添加条目来使更改持久化fstab

但实际上这可能只会让你的“交换空间耗尽”问题稍后出现,所以请继续阅读:

减少内存消耗

当今的计算机拥有充足的 RAM。除非您正在处理非常大的数据集或并行运行大量内存消耗大的应用程序,否则您不太可能用完 RAM 和/或交换空间。

除非您的应用程序之一存在内存泄漏并消耗了无限量的内存。

尝试找出哪些应用程序耗尽了所有内存,并检查它们是否泄漏资源。