如何看linux剩余内存
- Linux
- 2025-07-24
- 7
在 Linux中,使用 free -h命令可查看剩余内存,-h`表示以人类可读的GB/MB格式显示
在 Linux 系统中,监控剩余内存是保障系统稳定运行的重要操作,以下是多种查看内存剩余量的方法及详细解析:
核心命令行工具
-
free 命令
-
基础用法:free -h(-h 表示以人类可读的 MB/GB 为单位)
total used free shared buff/cache available Mem: 15G 9G 3G 1.5G 2G 4G Swap: 2G 0B 2G
- 关键指标:
| 字段 | 含义 |
|—————|————————–|
| total | 总物理内存 |
| used | 已用内存(包含缓存) |
| free | 完全空闲内存 |
| available | 可分配给新进程的内存 |
| buff/cache | 缓冲区和缓存占用 |
| shared | 共享内存(如 tmpfs) |
- 注意:available 比 free 更真实反映可用量,因 Linux 会将缓存释放后分配给新进程。
- 关键指标:
-
扩展参数:
- -t:显示 Total 和 OS 可见的总量(排除硬件保留内存)。
- -s:设置刷新间隔(如 free -s 5 每 5 秒刷新一次)。
-
top/htop 命令
- 动态监控:top 默认每 3 秒刷新,按 q 退出;htop 支持鼠标操作。
- 关键区域:
- 顶部摘要:显示 KiB Mem : 923456/1572864 (58%),即已用/总内存。
- 任务列表:按 M 键按内存占用排序,快速定位高消耗进程。
- 交互命令:
- 1:只显示 CPU 和内存占用最高的进程。
- shift+H(htop):显示线程而非进程。
-
vmstat 命令

- 语法:vmstat -s 输出内存相关统计。 16789872 K total memory 9452888 K used memory 2345678 K active memory ...
- 核心指标:
- used memory:当前已用内存。
- free memory:未分配内存。
- active memory:最近使用的活跃内存。
-
/proc/meminfo 文件
- 直接查看:cat /proc/meminfo MemTotal: 16384256 kB MemFree: 2345678 kB MemAvailable: 4325678 kB Buffers: 123456 kB Cached: 987654 kB
- 关键字段:
- MemAvailable:扣除缓存后可分配内存。
- Buffers:内核缓冲区(如块设备 I/O)。
- Cached:页面缓存(文件系统缓存)。
-
实时监控脚本

- 输出示例: 2024-07-24 14:00:00 total used free shared buff/cache available Mem: 15G 9G 3G 1.5G 2G 4G ---------
-
阈值报警
- Shell 脚本: if [ $(free -m | awk '/^Mem:/ {print $7}') -lt 1000 ]; then echo "内存不足!可用内存:$(free -m | awk '/^Mem:/ {print $7}')MB" | mail -s "内存告警" admin@example.com fi
- 说明:当 available 低于 1G 时发送邮件告警。
-
集成监控工具
- Prometheus + Grafana:通过 node_exporter 采集 MemAvailable 等指标,可视化历史趋势。
- 自定义埋点:在应用中嵌入内存检测逻辑(如 Python 的 psutil.virtual_memory())。
-
问:为什么 free 显示可用内存很低,但系统仍流畅?
答:Linux 采用惰性缓存机制,used 包含文件系统缓存和应用程序缓存,当新进程需要内存时,系统会自动释放缓存,因此即使 free 中的 available 较低,也不一定影响性能,建议关注 available 而非 free。
-
问:如何强制清除缓存以释放内存?
答:可使用 echo 3 > /proc/sys/vm/drop_caches(需 root 权限),但此操作通常无需手动执行:
- 参数含义:
- 1:清除页面缓存。
- 2:清除目录项和 inode 缓存。
- 3:两者全清。
- 警告:频繁清理缓存可能导致性能下降,因系统需重新加载常用数据。
- 参数含义:
常见问题解答(FAQs)
工具 适用场景 输出特点 free 快速查看总量 简洁,支持单位转换 top/htop 实时监控进程 动态排序,定位高耗进程 vmstat 系统资源综合分析 包含内存、交换、 I/O 等指标 /proc/meminfo 精准获取原始数据 详细但需过滤无关字段 通过组合使用上述工具,可全面掌握内存使用状态,建议优先关注 MemAvailable 和 available 字段,避免误判缓存占用导致的“假缺内存”。
内存剩余量计算逻辑
指标 计算公式 实际剩余内存 MemAvailable(可直接用于启动新进程) 理论最大剩余 MemFree + Cached + Buffers(需压缩缓存后释放) 已用内存 MemTotal MemAvailable 示例:若 MemTotal=16G, MemAvailable=4G, 则已用内存为 12G,但部分被缓存占用,实际可立即用的是 4G。
高级监控与自动化
-