温馨提示×

Linux怎么清理内存占用

小樊
41
2026-07-07 01:16:53
栏目: 智能运维

在 Linux 中,“清理内存占用”通常可以从释放缓存、结束进程、排查内存泄漏三个层面来做。下面按安全 → 进阶 → 不建议的顺序说明。


一、先确认内存到底被谁占了

在清理前,先确认问题来源:

free -h

重点关注:

  • used:已用内存
  • buff/cache:缓存(可释放)
  • available:真正可用内存

查看进程内存占用:

top
# 或
htop

按内存排序:

  • top → 按 M
  • htop → 按 F6PERCENT_MEM

二、安全做法:释放缓存(推荐)

Linux 会自动用空闲内存做缓存,一般不需要手动清理,但在某些场景下可以释放。

1️⃣ 释放 page cache / dentries / inodes

sync
echo 3 | sudo tee /proc/sys/vm/drop_caches

说明:

  • 1:只清 page cache
  • 2:清 dentries + inodes
  • 3:全部清理(最常见)

不会杀进程,不会丢数据
⚠️ 只是临时释放,系统会重新缓存


三、结束占用内存的进程(最常见)

1️⃣ 找到内存大户

ps aux --sort=-%mem | head

2️⃣ 杀掉异常进程

kill PID
# 或强制
kill -9 PID

⚠️ 不要乱杀系统进程(如 systemdkthreadd


四、排查内存泄漏(进阶)

1️⃣ 查看 slab 内存

slabtop

如果 dentry / inode_cache 很高,通常是文件缓存问题。

2️⃣ 检查是否有内存泄漏

cat /proc/meminfo

关注:

  • MemAvailable
  • Slab
  • SReclaimable

五、Swap 占用太高怎么办

查看 swap 使用

swapon -s
free -h

关闭 swap(临时)

sudo swapoff -a
sudo swapon -a

⚠️ 关闭 swap 可能导致内存不足时进程被 OOM 杀掉


六、不推荐 / 危险操作 ❌

  • 频繁 drop_caches:会影响性能
  • 盲目杀进程
  • 修改 /proc/sys/vm/ 参数而不了解含义

七、常见场景速查表

场景 建议
内存看起来被占满 available,不是 used
buff/cache 很高 正常,不用清
程序内存泄漏 重启程序
服务器卡顿 查 swap + top
Docker / Java 占内存 限制内存上限

如果你愿意,可以把下面信息发我,我可以帮你精准分析

free -h
top -b -n1 | head -20

或者说明:

  • 服务器 / 桌面 / Docker / 云主机
  • 内存多大
  • 卡顿的具体表现

0