要减少 Linux 系统中 Swap 的频繁使用,核心思路是降低系统对 Swap 的依赖,让更多数据留在物理内存(RAM)中。以下是具体方法,按优先级从高到低排列:
如果内存长期不足(如 8GB 跑大型应用),加内存是最根本的解决方案。Swap 本质是“内存的备胎”,备胎用得多,说明主胎不够用。
通过修改 swappiness 参数,控制内核何时开始使用 Swap。
cat /proc/sys/vm/swappiness
默认值通常是 60(范围 0–100),值越大越倾向用 Swap。
sudo sysctl vm.swappiness=10
10:仅在内存几乎耗尽时才用 Swap(推荐桌面/服务器)1:几乎不用 Swap(极端情况)0:在 3.5+ 内核中不是完全禁用,而是“最后才用”编辑配置文件:
sudo nano /etc/sysctl.conf
添加或修改:
vm.swappiness=10
保存后生效:
sudo sysctl -p
top
# 或
htop
# 或按内存排序
ps aux --sort=-%mem | head
常见元凶:
-Xmx)Linux 会缓存文件到内存(page cache),这不是问题,但如果你误以为“内存满了”,可以手动清:
# 仅清理缓存,不影响运行程序
sync
sudo sysctl vm.drop_caches=3
⚠️ 不建议长期这样做,缓存能提升性能。
sudo swapoff -a
永久关闭:注释 /etc/fstab 中的 swap 行。
⚠️ 风险:如果内存耗尽,可能直接 OOM(进程被杀)。
用压缩内存代替磁盘 Swap,速度更快:
sudo apt install zram-config # Ubuntu
或手动配置 zram 设备。
用 vmstat 或 sar 看是否真的在频繁换入换出:
vmstat 1
关注:
si(swap in)so(swap out)如果长期为 0 或很小,说明 Swap 使用并不频繁,无需过度优化。
| 场景 | 建议 |
|---|---|
| 桌面 / 服务器 | swappiness = 10 |
| 内存 ≥ 16GB | swappiness = 1~5 |
| 小内存设备 | 启用 zram |
| 内存严重不足 | 加内存 |
如果你愿意,可以把以下信息发我,我可以给你更精确的建议:
uname -a)free -h)