丽萨主机 - 双ISP住宅IP 服务全解锁吉云 - 新用户七折 香港CMI/英国9929/美国4837恒创科技 - 大带宽云19.8元/月起Jtti.cc - 云服务器 $3.08/月 CN2 GIAQQG.NET - 站长推荐 200M回国优化dotdotnetworks - 美国服务器专家HKG - 海外服务器19元/月起

Linux 内存占用很高?先搞懂这套内存机制


先给结论:空闲内存少是正常的

Linux 的设计理念是「闲置内存就是浪费」,会把大量空闲内存拿去做文件缓存。所以 free 里 free 那一列数字很小,通常不用紧张。

正确的读法

看 free -m 时忽略第一行的 free,重点看 available 这一列。它表示在不触发 swap 的前提下还能被新进程用掉多少内存,这才是真实余量。

  • total:物理内存总量
  • used:被进程实际占用(含共享段)
  • buff/cache:文件缓存,可被随时回收
  • available:真正可用余量,只看这个
什么时候该紧张
  • available 长期低于 total 的 10%
  • swap 有持续读写,即 si / so 长期大于 0
  • 出现 OOM Killer 日志,进程被无预警杀掉
两个常见误区

第一,看到 free 很小就去装清理脚本——多数「一键释放内存」脚本做的是主动丢弃缓存,会让磁盘 IO 反而变差。第二,把 top 里的 %MEM 直接相加——共享内存会被重复计算。

判断内存够不够,看 available 和 swap 活动,不看 free。

低内存机型怎么调

1 核 1G 的机器上,先把 swap 配上并调低 swappiness,再给数据库收紧缓冲池(通常 128–256M 就够),收益比装任何优化脚本都大。