free - 内存使用概览free -h # 人性化显示(自动转换GB/MB单位) free -m # 以MB为单位精确显示 free -s 5 # 实时监控模式,每5秒刷新一次
输出字段解析:

total:系统物理内存总量used:已使用内存(包含缓存和缓冲区)free:完全未被占用的内存available:实际可用内存(包含可回收的缓存)shared/buffers/cached:缓存和缓冲区占用的临时内存(可快速释放)专业建议:
available字段比free更能反映真实可用内存,因为Linux内核会智能利用空闲内存作为磁盘缓存,这部分内存可随时回收用于新进程。
top 与 htop - 进程级内存监控top # 经典系统监控工具,按'M'键可按内存占用排序 htop # 增强版监控工具(需通过`apt install htop`或`yum install htop`安装)
关键指标说明:
RES(Resident Memory):进程实际占用的物理内存(常驻内存集)%MEM:进程内存占用占总内存的百分比VIRT:进程使用的虚拟内存总量(包含共享库、映射文件等)SHR:共享内存大小(多个进程共享的内存部分)(典型内存监控界面示意图)
vmstat - 虚拟内存统计分析vmstat -s # 显示详细内存统计摘要 vmstat 1 5 # 每秒采样一次,共采集5次(包含内存、交换分区、IO等核心指标)
重点关注指标:
si(swap in):每秒从交换分区加载到内存的数据量(KB)so(swap out):每秒从内存换出到交换分区的数据量(KB)buff:用作缓冲区的内存量cache:用作页面缓存的内存量so持续大于0,表明系统正在频繁使用交换空间,可能存在内存瓶颈smem - 高级内存报表工具smem -u -k # 按用户统计内存使用(KB单位) smem -p -s swap # 以百分比显示并按交换使用量排序 smem --pie=command -s rss # 生成RSS内存占用饼图
pmap - 进程内存映射分析pmap -X <PID> # 显示指定进程的详细内存分布 pmap -x $(pgrep nginx) # 查看nginx进程的内存使用细节
/proc/meminfo - 内核内存信息cat /proc/meminfo | grep -e MemTotal -e MemAvailable -e SwapTotal
核心字段说明:
MemTotal:总物理内存MemFree:完全空闲内存Buffers/Cached:磁盘缓存使用的内存SwapCached:被换出但暂存的内存Active/Inactive:活跃/非活跃内存页Dirty:等待写回磁盘的内存Writeback:正在写回磁盘的内存glances - 一体化监控仪表盘glances --disable-plugin disk,network # 专注内存监控模式 glances --export csv --export-file memory_report.csv # 导出内存报告
sar - 历史性能分析# 安装sysstat工具包 sudo apt install sysstat # Debian/Ubuntu sudo yum install sysstat # CentOS/RHEL # 使用示例 sar -r 1 3 # 实时内存采样(每秒1次,共3次) sar -r -f /var/log/sa/sa15 # 分析15号的历史数据
快速诊断:
watch -n 1 "free -h; echo; vmstat 1 2 | tail -n 1"
预警信号:
available内存持续低于总内存10%swap使用率超过30%si/so持续有数值波动OOM killer频繁出现(检查dmesg | grep oom)长期监控:
while true; do date ps -eo pid,user,%mem,cmd --sort=-%mem | head -n 10 echo "-----" sleep 5 done
专业工具:
valgrind --tool=memcheck <program>(开发阶段)leaktracer(运行期检测)mtrace(glibc内置工具)# 查看当前缓存策略 sysctl vm.swappiness vm.vfs_cache_pressure # 临时调整(值越小越避免使用swap) sudo sysctl vm.swappiness=10 sudo sysctl vm.vfs_cache_pressure=50 # 清除缓存(生产环境慎用) sync; echo 1 > /proc/sys/vm/drop_caches # 仅清除页缓存 sync; echo 2 > /proc/sys/vm/drop_caches # 清除目录项和inode缓存 sync; echo 3 > /proc/sys/vm/drop_caches # 清除所有缓存
| 工具 | 特点 | 安装命令 |
|---|---|---|
nmon | 交互式TUI界面 | sudo apt install nmon |
Grafana+Prometheus | 企业级监控看板 | 官方文档 |
Netdata | 实时Web仪表盘 | bash <(curl -Ss https://my-netdata.io/kickstart.sh) |
Glances | 跨平台监控工具 | pip install glances |
(现代化内存监控面板示例)
最佳实践建议:
htop+glances组合监控vmstat+smem+/proc/meminfo综合分析Prometheus+node_exporter+Grafana方案valgrind进行内存泄漏检测swappiness值(建议10-30)进阶技巧:
numastat查看NUMA内存分配情况slabtop监控内核slab分配器使用情况perf工具进行内存性能分析earlyoom预防系统因内存不足而卡***