0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux下扩充Swap交换空间:解决内存不足的实用指南,这些影响要注意!

jf_44130326 来源:Linux1024 2026-02-09 16:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家在使用Linux系统(比如常用的Ubuntu)时,是不是偶尔会遇到内存不足的弹窗?比如运行大型编译任务、多开虚拟机、做数据分析,或者把Linux当服务器用的时候,物理内存一旦告急,系统就会卡顿甚至崩溃。这时候,Swap交换空间就成了救场神器

今天就带大家全面搞懂Swap:它是什么、什么时候需要扩充、扩充后对堆内存和存储速率有啥影响,最后附上一步到位的Ubuntu扩充教程,新手也能跟着做!

wKgZPGkaiwuAb3N7AAAG6CSGfhs839.png

一、先搞懂:Swap交换空间到底是什么?

简单说,Swap就像Linux虚拟内存,和Windows的虚拟内存原理类似——当物理内存(就是你电脑里插的内存条)不够用的时候,系统会把内存中暂时用不上的数据,临时存到硬盘(或SSD)的Swap分区/文件里,腾出物理内存给急需的程序使用。

比如Ubuntu系统默认的Swap大小通常是2G,如果你物理内存是8G,运行一个占10G内存的程序,这时候Swap就会接手剩下的2G,避免程序直接崩溃。

二、这些场景下,一定要扩充Swap

不是所有情况都需要扩充Swap,关键看你的使用场景和系统状态。以下3种情况,建议立刻检查并扩充Swap

1.物理内存不足,频繁触发内存告警

比如物理内存8G,却要运行占12G内存的大型软件(如MatlabDocker容器集群、视频渲染工具);

多任务并发时(比如开着代码编辑器、浏览器、虚拟机、数据库),系统卡顿明显,用free -h命令查看时,可用内存接近0Swap却已经占满。

2.服务器长期高负载运行

如果把Linux当服务器(比如Web服务器、数据库服务器),长期有大量进程在后台运行,即使物理内存暂时够用,也建议扩充Swap——避免突发流量(比如瞬间大量用户访问)导致内存峰值超负载,从而保证服务稳定。

3.低内存设备的续命需求

比如树莓派嵌入式Linux设备(物理内存可能只有2G/4G),运行轻量级服务器或边缘计算任务时,2G默认Swap不够用,扩充后能显著减少内存溢出风险。

三、扩充Swap对堆内存的影响:有帮助但也有

首先得明确:堆内存是程序运行时动态申请的内存空间(比如JavaJVM堆、C++new申请的内存),是程序干活的核心内存区域。Swap和堆内存的关系很紧密,扩充后影响主要有两点:

1.正面影响:避免堆内存溢出崩溃

当程序申请的堆内存超过物理内存上限时,系统会把堆内存中暂时闲置的数据(比如很久没调用的变量、缓存数据)转移到Swap中,释放物理内存给新的堆内存申请。

举个例子:你运行一个Java程序,JVM堆设置为10G,而物理内存只有8G。如果没有Swap,程序会直接报“OOM(内存溢出)错误;有了8G Swap后,系统会把堆中暂时不用的2G数据存到Swap,程序能正常运行。

2.负面影响:堆内存交换频繁会变慢

如果堆内存数据需要频繁在物理内存“Swap”之间切换(行业里叫内存颠簸),程序响应会明显变慢。因为硬盘/ SSD的读写速度,比物理内存慢了几个数量级(物理内存是GB/s级,机械硬盘是MB/s级,即使是SSD也差10倍以上)。

比如你写的程序频繁申请和释放堆内存,且数据量接近物理内存上限,Swap会反复/堆数据,此时你会发现程序卡顿、CPU占用率飙升(因为CPU要等数据交换完成)。

四、对存储速率的影响:别忽视硬盘IO的压力

Swap本质是用硬盘空间当内存,所以它的读写速度完全依赖你的存储设备,同时也会占用存储设备的IO资源,影响其他操作:

1.不同存储介质,影响天差地别

存储类型

Swap读写速度

对系统的影响

机械硬盘(HDD

慢(约50-150MB/s

严重占用硬盘IO,同时做文件拷贝、安装软件会卡顿,甚至系统整体响应变慢

固态硬盘(SSD

较快(约500-2000MB/s

影响比HDD小,但频繁读写Swap会消耗SSD擦写寿命SSD有固定擦写次数)

nvme固态硬盘

很快(约3000-7000MB/s

影响最小,接近物理内存速度,适合作为Swap存储介质

2. Swap使用率过高,整个系统会卡壳

如果Swap使用率超过50%,且持续上升,说明物理内存已经严重不足,系统大部分时间都在搬数据(把物理内存数据写到Swap,再把Swap数据读回物理内存),此时:

打开文件、切换软件要等很久;

命令行输入指令,回车后要延迟几秒才响应;

甚至鼠标光标都会卡顿跳帧

五、实战:Ubuntu下扩充Swap7步详细教程

Ubuntu系统为例,从查看当前Swap”开机自动生效,每一步都有具体命令和示例,新手也能跟着做(其他Linux发行版步骤类似,命令通用)。

前置准备

确保系统有足够的硬盘/ SSD空间(比如要扩到8G,就需要至少8G空闲空间);

sudo权限操作(需要管理员密码)。

步骤1:查看当前Swap大小

先执行free -h命令,查看当前Swap的总大小和使用情况(-h表示人类可读格式,用GB/MB显示,更直观):

free-h

执行后会看到类似输出:

       总计    已用    空闲   共享 缓冲/缓存  可用内存:   19Gi   1.2Gi   5.9Gi   3.0Mi   12Gi   17Gi交换:   2.0Gi    0B   2.0Gi

能看到默认Swap2G,这时候如果要扩到8G,继续下一步。

步骤2:先关闭现有Swap

扩充前必须关闭当前的Swap(避免数据冲突),执行命令:

sudo swapoff -a

输入管理员密码后,再用free -h验证,会发现交换那一行的总计变成0,说明关闭成功:

交换:     0B     0B     0B

步骤3:创建新的Swap文件

dd命令创建一个指定大小的Swap文件(这里以扩到8G为例),命令如下:

sudoddif=/dev/zero of=/swapfile bs=1G count=8

解释一下参数:

if=/dev/zero:从零设备读取数据(用来生成空白文件);

of=/swapfile:把生成的文件保存到根目录,命名为swapfile

bs=1G:每次读写的块大小1G

count=8:读取8次块,总大小= 1G×8=8G(想扩到16G就把count改成16)。

执行后会看到类似输出,说明文件创建成功:

记录了8+0的读入记录了8+0的写出8589934592字节(8.6GB,8.0GiB)已复制,7.04727秒,1.2GB/s

步骤4:设置Swap文件权限(关键!)

为了安全,必须把Swap文件的权限设为600——只有root用户能读写,其他用户没有权限(防止误修改或篡改),命令:

sudochmod600 /swapfile

执行后没有输出,说明权限设置成功。

步骤5:格式化Swap文件

把刚才创建的空白文件格式化为“Swap格式,让系统能识别为交换空间,命令:

sudo mkswap /swapfile

执行后会看到类似输出,包含SwapUUID(不用管UUID,知道成功就行):

正在设置交换空间版本1,大小=8GiB(8589930496 个字节)标签,UUID=C27ae28e-a3ea-47fa-ad81-7f4bc779fa8e

步骤6:启用新的Swap

格式化后,启用这个新的Swap文件,命令:

sudo swapon /swapfile

再用free -h验证,会发现交换的总计变成8G,说明启用成功:

交换:   8.0Gi    0B   8.0Gi

步骤7:配置开机自启(避免重启后失效)

默认情况下,重启系统后新的Swap会失效,所以要把Swap文件添加到/etc/fstab配置文件中,让系统开机自动加载。

1.用文本编辑器打开/etc/fstab

sudo nano /etc/fstab

1.在文件末尾添加一行(复制粘贴即可,注意不要写错):

/swapfile none swap sw 0 0

1.保存退出:按Ctrl+O(字母O),再按回车确认,最后按Ctrl+X退出编辑器。

这样重启系统后,Swap还是8G,不会失效。

六、这些注意事项,新手一定要避开!

1.Swap大小不是越大越好

一般建议Swap大小是物理内存的1-2倍(比如物理内存16GSwap16-32G);但如果是SSD,不建议超过物理内存(避免频繁读写消耗SSD寿命)。

2.Swap文件别放错位置

尽量把Swap文件放在空闲空间充足的分区,优先选SSD(速度快),别放在机械硬盘的系统分区(会拖慢系统)。

3.关闭Swap要谨慎

如果系统正在高负载运行(比如有程序在用Swap),突然执行swapoff -a会导致程序崩溃,建议在系统空闲时操作。

4.定期检查Swap使用情况

htopfree -h定期查看Swap使用率,如果长期超过50%,说明物理内存真的不够用,建议升级内存条(Swap只是应急,不能替代物理内存)。

最后

SwapLinux系统的内存缓冲垫,合理扩充能解决很多内存不足的问题,但也要注意它对堆内存和存储速率的影响——不要过度依赖Swap,升级物理内存才是根本解决方案。

如果觉得这篇教程有用,欢迎分享给身边用Linux的朋友~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11854

    浏览量

    219822
  • 内存
    +关注

    关注

    9

    文章

    3255

    浏览量

    76590
  • Ubuntu
    +关注

    关注

    5

    文章

    617

    浏览量

    33791
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    红米显示内存不足怎么处理

    手机上原来就安装有QQ聊天软件,现在一打开空间就显示内存不足,有许多空间的图片都不及时显示。这不是坏,但是怎么处理呢。手机本身可以运行的空间就找1G。该怎么扩展呢。失眠了,看手机才想起
    发表于 03-09 02:12

    浅析linux内存释放和使用限制

    1、内存运行机制1)物理内存和虚拟内存物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物
    发表于 07-11 07:50

    RAM内存不足错误

    遇到难题一、:RAM内存不足错误:一 、将UC/OS III移植到STM32F103C8T6的遇到内存不足的报错。分析,c8t6系类RAM内存只有20KB。如上图。在代码中将heap_size设置成
    发表于 08-20 08:14

    HFSS软件内存不足的解决方法

    HFSS软件内存不足该如何解决?
    的头像 发表于 07-15 10:15 2.5w次阅读

    虚拟内存不足的原因

    电脑系统是WinXP,最近使用时,没开多少程序,却常常出现虚拟内存不足的系统提示。可能有以下几个原因
    的头像 发表于 03-14 14:25 3898次阅读

    虚拟内存不足怎么解决

    电脑的虚拟内存不足以后,很多功能就无法使用了,且会弹出如下所示的页面。这就说明虚拟内存无法满足我们的使用需求,就需要咱们对电脑的虚拟内存进行重新设置。那么如何设置呢?请看下文。
    的头像 发表于 03-14 14:29 1.4w次阅读

    需要了解Linux swap分区的扩展

    LinuxSwap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘
    发表于 05-15 08:51 1879次阅读
    需要了解<b class='flag-5'>Linux</b> <b class='flag-5'>swap</b>分区的扩展

    嵌入式LinuxSwap交换区剖析

    的系统性能指标。这些性能指标中和Swap有关的包括以下几项:  procs的w  它表示当前(三秒钟之内)需要释放内存交换出去的进程数量
    发表于 04-02 14:36 1115次阅读

    手机内存不足的清理方法

    很多时候当我们拿起手机时,突然提示我们手机内存不足,无法安装应用,部分功能受影响,手机最近频频提醒内存空间不足,随着手机使用时间的延长,手机不可避免的越来越臃肿,手机运行速度也是一卡再卡。怎么办?没关系,又显示
    发表于 05-20 09:49 1.1w次阅读

    电脑和手机的内存不足怎么办

    如果是电脑内存不足,可以通过任务管理器关闭部分应用程序,也可以在控制面板中调整虚拟内存的大小,还可以通过增加内存容量方式解决。如果是手机运行内存不足,可以一键关闭多任务。如果是手机存储
    发表于 05-22 09:41 2518次阅读

    虚拟内存不足的解决办法

    虚拟内存就是当电脑物理内容不够或者防止运行大型软件时出现不够,在系统盘,比如C盘中划出一个区域,用来存储交换数据,类似物理内存的功能,所以就叫虚拟内存。当出现虚拟
    发表于 05-27 10:19 3405次阅读
    虚拟<b class='flag-5'>内存不足</b>的解决办法

    电脑内存不足怎么解决win10

    电脑内存大家一定都知道吧,通常我们在用电脑的时候,当我们打开大型的网络游戏和各种应用的软件时,如果我们的电脑本身的内存不足,就会使游戏和大型的软件打开失败或者是终止。而且电脑内存不足会大大降低电脑
    发表于 06-12 10:31 1586次阅读

    RAM内存不足的表现及解决方法

    RAM内存不足的表现及解决方法 一、RAM内存不足的表现 系统运行缓慢 当RAM内存不足时,计算机的响应速度会明显下降,打开程序或文件需要更长的时间。 频繁的页面交换(Page Swa
    的头像 发表于 11-11 09:53 9217次阅读

    虚拟内存不足如何解决 虚拟内存和物理内存的区别

    虚拟内存不足的解决方案 虚拟内存不足是计算机用户经常遇到的问题,尤其是在运行大型软件或多任务处理时。以下是一些解决虚拟内存不足问题的方法: 增加物理内存(RAM) : 这是最直接的解决
    的头像 发表于 12-04 09:14 2956次阅读

    Linux Swap交换空间详解:Android编译内存不足?这样扩充立竿见影

      Swap  交换空间不足在  “ 搞鬼 ” 。今天不仅要带大家搞懂  Swap  的核心作用,还会结合  Android  源码编译的实
    的头像 发表于 12-06 08:10 4698次阅读