在Linux系统中,内存管理是系统运维和性能调优的核心环节。准确掌握内存使用情况,能有效预防系统崩溃、服务中断等问题。本文将详细介绍多种专业方法,助你全面排查内存占用。

free命令是最直接的内存查看工具,通过free -h可获取人类可读的内存数据:
| 字段 | 类型 | 说明 |
|---|---|---|
| total | 物理内存 | 系统总内存容量 |
| used | 物理内存 | 已使用内存(含缓存) |
| free | 物理内存 | 完全未使用的内存 |
| shared/buffers/cache | 物理内存 | 内核缓冲与页面缓存 |
| available | 物理内存 | 可用内存(新进程可分配量) |
top命令提供动态视图,输入top后按M可按内存排序进程。关键指标包括:
1. /proc/meminfo:系统内存的原始数据源,包含超过50项指标:
| 关键指标 | 含义 |
|---|---|
| MemTotal | 物理内存总量 |
| MemFree | 完全空闲内存 |
| Cached | 页面缓存大小 |
| SwapCached | Swap缓存量 |
| Active(anon) | 活跃匿名页(如堆内存) |
2. smem工具:提供更细致的进程内存报告:
smem -k -s swap -r 显示每个进程的Swap使用排名
smem -p 以百分比形式展示内存占比
3. vmstat:动态监控内存压力
vmstat -s 显示内存统计摘要
vmstat 5 每5秒刷新一次,关注si(Swap入)、so(Swap出)字段
当发现可用内存(available)持续下降时:
1. 使用ps aux --sort=-%mem | head -10定位Top10内存进程
2. 通过valgrind --tool=memcheck <程序>检测应用层泄漏
3. 内核泄漏需检查/proc/slabinfo中异常增长的slab对象
当物理内存不足时:
- 系统将非活动页换出至Swap空间
- 若Swap用尽,触发OOM Killer强制终止进程
调整策略:
sysctl vm.swappiness=30(值越低越倾向回收缓存而非Swap)
通过上述工具组合,可构建完整的内存监控体系。建议日常运维中建立基线数据,当可用内存低于总内存10%或Swap使用率持续超过20%时需立即介入排查。