内存怎么看才不误判
内存视图最容易被误读的地方在于缓存:系统会把暂时不用的内存拿来做文件缓存,提高读写效率,需要时又能迅速还给应用,所以「空闲内存很小」本身并不代表内存不足。判断压力的正确落点是可用内存估算值——它是系统对新程序能拿到多少内存的估计,已经把这部分可回收缓存算进去了。真要下结论,还要结合交换分区的使用与换入换出活动,以及进程自身的常驻内存趋势一起看。
基本信息
| 所属 | procps 提供的查看工具,数据来自内核统计接口 |
|---|---|
| 关键指标 | 总量、已用、空闲、缓存与可用估算 |
| 容量单位 | 建议使用可读单位选项,避免按字节换算出错 |
| 交换分区 | 查看使用量与换入换出活动 |
| 进程视角 | 按常驻内存排序找占用头部 |
| 内核视角 | 内核日志里可确认是否触发过内存不足终止 |
典型使用场景
- 容量评估:为扩容决策提供内存使用基线
- 性能排查:应用变慢时判断是否发生频繁换页
- 内存增长定位:按进程常驻内存排序,观察头部进程趋势
- 服务被终止复盘:确认是否由内存不足触发进程终止
- 交付验收:核对内存与交换分区规划是否符合规范
- 监控调优:确定告警阈值应基于可用内存而非空闲内存
常用命令
常用命令
free -h # 可读单位的内存视图
free -m # 以兆字节显示,便于换算
head -8 /proc/meminfo # 内核统计原始数据
swapon --show # 查看交换分区使用情况
vmstat 1 3 # 观察换入换出活动与运行队列
ps -eo pid,rss,comm --sort=-rss | head -10 # 常驻内存占用头部进程输出列读法
| 列 | 含义 | 关注点 |
|---|---|---|
| total | 总内存 | 含被内核与保留部分占用 |
| used | 已用 | 计算口径已包含部分不可回收占用 |
| free | 完全空闲 | 数值小属正常,系统会用缓存填满 |
| buff/cache | 可回收缓存 | 压力出现时能释放给应用 |
| available | 可用估算 | 判断内存压力应看这一列 |
| swap 使用量 | 交换分区占用 | 持续增长且伴随换页说明内存吃紧 |
缓存高不等于内存泄漏:这是系统主动利用空闲资源的表现,有真实需求时会自动让出。真正值得警惕的信号是可用内存估算持续走低、交换分区占用不断增长,以及换入换出活动频繁。
确认服务是否因内存不足被终止,要结合内核日志里的终止记录与进程内存排序一起判断:日志给结论,进程列表给嫌疑对象,两者对上才能确定是哪个进程撑满了内存。