1. 增加Swap空间(快速缓解压力)
当Swap占用过高且物理内存不足时,添加新的Swap空间是最直接的解决方法。可以选择创建交换文件(无需修改分区表,灵活便捷)或调整交换分区(需磁盘工具支持)。
fallocate命令创建指定大小的文件(如2GB):sudo fallocate -l 2G /swapfile(若fallocate不可用,用dd if=/dev/zero of=/swapfile bs=1G count=2替代);设置严格权限防止误操作:sudo chmod 600 /swapfile;格式化为Swap空间:sudo mkswap /swapfile;启用Swap:sudo swapon /swapfile。sudo swapoff /dev/sdXN关闭原Swap分区(/dev/sdXN为分区路径,如/dev/sda2);再用fdisk或parted工具扩大分区(需备份数据);格式化新分区:sudo mkswap /dev/sdXN;启用:sudo swapon /dev/sdXN。/etc/fstab文件(交换文件添加/swapfile none swap sw 0 0,分区添加/dev/sdXN none swap sw 0 0),确保重启后自动挂载。2. 调整Swappiness参数(控制Swap使用频率)
Swappiness参数(范围0-100)决定系统使用Swap的倾向:值越高,系统越早使用Swap(默认通常为60);值越低,系统越倾向于保留数据在物理内存中。
sysctl命令设置,如降低至10:sudo sysctl vm.swappiness=10。/etc/sysctl.conf文件,添加或修改行:vm.swappiness=10;应用更改:sudo sysctl -p。3. 关闭不必要的应用程序与服务(减少内存消耗)
过多后台进程或内存泄漏的应用会快速耗尽物理内存,迫使系统使用Swap。
top(按M按内存排序)或htop(更直观)命令识别内存占用高的进程(如浏览器、视频编辑软件)。k键输入进程ID(PID)终止;或用kill -9 PID强制结束(谨慎使用,避免终止系统关键进程)。systemctl list-units --types service查看开机自启服务,禁用不需要的服务(如sudo systemctl disable bluetooth)。4. 升级物理内存(根本解决内存瓶颈)
若系统频繁出现Swap占用过高(如即使调整Swappiness和关闭进程后仍持续高负载),**增加物理内存(RAM)**是最彻底的解决方案。例如,将4GB内存升级至8GB或更高,可显著减少对Swap的依赖,提升系统响应速度。需注意:升级内存需匹配主板支持的规格(如DDR4、容量上限)。
5. 使用zram替代Swap(高性能方案)
zram是Linux内核的内存压缩功能,可将部分内存作为压缩的Swap空间,减少磁盘I/O(传统Swap写入磁盘速度慢),适合SSD用户或内存较小的系统。
sudo apt install zram-tools。/etc/default/zramswap文件,设置Swap大小(如SIZE_PERCENT=50表示使用50%内存作为zram);重启zram服务:sudo systemctl restart zramswap。6. 监控Swap使用情况(预防问题复发)
定期监控Swap和内存使用,及时发现异常(如Swap突然增长)。常用命令:
free -h:查看内存和Swap的总使用量及剩余量(直观易读)。swapon --show:显示当前启用的Swap设备及使用情况(如/swapfile 2G 1.5G 0.5G表示已用1.5G,剩余0.5G)。vmstat 1:实时监控系统资源(包括Swap in/out次数,若si/so列数值持续较高,说明Swap使用频繁)。