Linux内存used上涨属正常缓存机制,available才是可用内存;真内存不足需看available是否趋近0、si/so是否频繁非零、RSS总和是否逼近不可回收内存。

这是 Linux 内存管理的正常现象,不是内存泄漏或异常占用。Linux 会主动利用空闲内存做缓存(如 page cache、dentries/inodes),提升 I/O 性能,这些缓存可被应用随时回收,因此 available 字段才是你真正能用的内存余量。
为什么 used 持续上涨但系统不卡?
Linux 的 used 值包含以下几类内容:
- 真正被进程独占的内存(RSS + shared memory 等)
- 内核使用的内存(slab、page tables 等)
- 文件缓存(page cache)、目录项缓存(dentries)、inode 缓存等——这部分是“可回收”的
只要 available 还有几百 MB 甚至更多,且 swap 使用量稳定(free -h 中 swpd 列接近 0),就说明系统内存压力小,缓存机制正在高效工作。
如何判断是不是真内存不足?
别只看 used%,重点观察这几个指标:
-
available是否持续逼近 0(比如只剩几十 MB) -
si/so列是否频繁非零(vmstat 1查看,表示 swap 正在换入/换出,是内存紧张信号) -
pgpgin/pgpgout是否激增(vmstat -s | grep pg),结合高 I/O 可能说明缓存失效严重 - 进程 RSS 总和是否接近
available + used 中不可回收部分
要不要手动清理缓存?
一般不需要,也不推荐常规操作。Linux 自己会根据负载动态回收。如果确实要临时释放(例如调试、压测前后),可用:
sync && echo 3 > /proc/sys/vm/drop_caches(清 page cache + dentries + inodes)- 注意:这只会释放可回收缓存,不影响正在运行的进程;执行后
available会上升,used下降,但很快又会被新缓存填满 - 切勿加到定时任务里——反而降低性能
什么情况才该警惕?
出现以下组合时,才需深入排查:
-
available长期低于 100MB(视总内存比例调整,如 64G 机器低于 500MB) -
free -h中buff/cache不涨反跌,但used暴涨 -
top或ps aux --sort=-%mem显示某个进程 RSS 持续增长无收敛 -
/proc/meminfo中Slab或SReclaimable异常高且不释放(可能是内核模块或驱动泄漏)










