free -h 的 available 列才是系统真正可用内存,而非 free 列;buffers/cache 高属正常,SwapUsed 持续增长比 available 低更危险;用 ps 或 htop 查 RSS 定位内存大户,/proc/pid/status 提供最权威内存细节。

free -h 是最直接、最可靠的起点,它能告诉你系统当前「真正还能用多少内存」——关键看 available 这一列,不是 free。
为什么不能只看 free 列?
Linux 会把空闲内存自动用作 buffers 和 cache(比如文件缓存、磁盘预读),这部分内存随时可被新进程回收。所以 free 值低 ≠ 内存紧张。available 才是内核估算出的、能立刻分配给新程序的实际可用量。如果它长期低于总内存的 10%,才真该警惕。
-
MemFree在/proc/meminfo里也存在,但纯属“未被任何用途占用”的冷内存,日常几乎不会高 -
buff/cache高反而是健康表现,说明系统在有效利用闲置资源 -
SwapUsed > 0且持续增长,往往比available低更危险——说明物理内存已不够,开始频繁换页
怎么快速定位吃内存的进程?
用 ps 做静态快照,适合脚本或排查时一次性抓取:
- 按实际物理内存(
RSS)降序:ps aux --sort=-rss | head -n 10 - 按内存占比(
%MEM)降序:ps aux --sort=-%mem | head -n 10 - 只看某用户(如
www-data):ps -u www-data -o pid,comm,%mem,rss --sort=-rss
注意:RSS(等同于 RES)才是进程真实占的物理内存;VSZ(或 VIRT)含 mmap 映射、swap 空间等,虚高常见,别当真。
想实时观察并交互操作,用 htop 而不是 top
htop 不是默认安装的,但值得装:sudo apt install htop(Debian/Ubuntu)或 sudo yum install htop(RHEL/CentOS)。它比 top 多出几个关键能力:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 彩色高亮 + 鼠标支持,一眼看出内存大户
- 按
F6→ 选MEM%,直接按内存占比排序 - 按
t切换树状视图,看清父子进程关系(比如一个主进程拉起一堆 worker) - 按
Shift+K可以隐藏内核线程,减少干扰
top 也能做类似事(按 Shift+M),但不支持鼠标、无法横向滚动长命令名、没有树状模式——排查多线程服务时容易漏掉子进程。
/proc//status 里藏着最细粒度的内存真相
当你怀疑某个进程异常耗内存,又发现 ps 或 htop 显示的 RSS 和你预期不符,就该查它的真实内存构成:
- 看常驻物理内存:
grep VmRSS /proc/1234/status(输出如VmRSS: 1845236 kB) - 看虚拟内存总量:
grep VmSize /proc/1234/status - 看是否用了大量共享内存:
grep VmData /proc/1234/status(堆)、grep VmStk /proc/1234/status(栈)
这里的数据和 ps 的 RSS 基本一致,但更权威——因为 ps 本质就是读这个文件。如果两者差异大,说明进程刚 fork 或内存映射状态不稳定,此时以 /proc/<pid>/status</pid> 为准。
别忽略 available 和 SwapUsed 的组合信号;ps 和 htop 看的是“谁在用”,而 /proc/<pid>/status</pid> 看的是“它到底怎么用的”——三者缺一不可。

















