在 Debian(以及绝大多数 Linux 发行版)中,swap 被占用并不一定代表内存不够用了,常见原因主要有下面几类。
当物理内存(RAM)不足时,内核会把不常用但又不能释放的内存页写到 swap。
即使后来内存空闲了,这些页默认不会自动换回内存,所以你会看到:
这是正常现象,不是故障。
查看示例:
free -h
total used free shared buff/cache available
Mem: 7.7G 2.1G 4.5G 200M 1.1G 5.0G
Swap: 2.0G 800M 1.2G
Debian 默认:
cat /proc/sys/vm/swappiness
一般是 60
含义(简化):
如果你内存很大(比如 16G+),但仍看到 swap 被用,多半是这个原因。
可临时降低:
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
例如:
它们:
结果:
如果你开启过:
hibernatesuspend-to-diskDebian 会把整个内存镜像写入 swap
此时 swap 被大量占用是设计行为。
si/so 长期为 0vmstat 1
关注:
si so
0 0
si/so 频繁不为 0说明:物理内存真的不够用
sudo swapoff -a
或禁用开机挂载(编辑 /etc/fstab)
sudo swapoff -a
sudo swapon -a
⚠️ 前提:内存足够容纳 swap 内容
Debian 中 swap 被占用,大多数情况是“曾经用过、但没换回来”或“swappiness 偏高”,并不一定代表系统出问题。
如果你愿意,可以把下面命令的输出贴出来,我可以帮你具体分析:
free -h
swapon --show
cat /proc/sys/vm/swappiness
vmstat 1 5