linux - swap用完是什么意思?

标签 linux ubuntu operating-system

<分区>

在许多情况下,在 Linux 机器上我们可能会遇到交换空间不足的错误。到底是什么意思。是不是类似于抖动?空间不足和交换空间不足是相似的术语吗?我们怎样才能找到修复这类错误的方法?

最佳答案

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

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

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

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

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

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

扩展交换空间

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

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

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

但实际上这可能只会让您的“交换空间用完”问题稍晚出现,因此请继续阅读:

减少内存消耗

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

除非,也就是说,您的其中一个应用程序具有 memory leak并消耗无限量的内存。

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

关于linux - swap用完是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412987/

相关文章:

c - 如何使用c编程获取linux上的内核数?

Java 获取 bash root 访问权限

python - Pandas:如何在 Linux 和 Windows 中写入(数据所在的)路径

ubuntu - 应用程序在运行 logrotate 后写入 ".log.1"文件而不是 ".log"文件

c - 如何在Ubuntu中用C语言使用命令行参数运行这个程序?

c - xv6 makefile 表示未定义对 __printf_chk 的引用

c# - 跨平台顺序 GUID

database - 如何使用开源 swift 访问数据库?

ios - 我们可以从 iOS 版本的应用程序创建 mac 版本吗

linux - 如何在获取find命令返回的结果后在while循环中复制文件?