在Linux系统中查看服务器内存信息是系统管理和性能监控的重要任务,通过多种命令可以获取内存使用情况、空闲内存、缓存占用等关键数据,以下将详细介绍常用的内存查看方法及其输出解读,帮助管理员全面掌握服务器内存状态。

使用free命令查看内存概览
free命令是最基础的内存查看工具,通过-h参数可以以人类可读格式(如KB、MB、GB)显示内存信息,执行free -h后,输出通常包括两行:物理内存(Mem)和交换空间(Swap),物理内存部分显示总内存、已用内存、空闲内存、缓冲区和缓存等数据。used列包含真正被程序占用的内存,而buff/cache列是内核用于缓存和缓冲的内存,这部分内存可以在需要时被释放。
total used free shared buff/cache available
Mem: 7.7G 2.1G 3.2G 123M 2.4G 5.2G
Swap: 2.0G 0B 2.0G
这里的available列表示新进程可用的内存总量,比free列更准确,因为它包含了可回收的缓存内存。
使用top/htop命令实时监控内存
top命令动态显示系统进程资源占用情况,其中%MEM列表示每个进程的内存占用百分比,通过按M键可以按内存使用率排序进程。htop是top的增强版,提供更直观的界面,不同颜色区分不同类型的内存(如代码、数据、堆栈),并支持鼠标操作,在htop界面中,可以清晰看到:
- 绿色:用户进程内存
- 蓝色:内核缓冲区
- 橙色:缓存内存
- 红色:交换空间使用
使用vmstat命令分析内存活动
vmstat命令报告虚拟内存统计信息,通过vmstat -s可以显示内存使用的详细摘要,包括:

- 总内存、空闲内存、缓冲区、缓存等各项的具体数值
- 页面错误(pgpgin/pgpgout)、交换活动(swpd)等动态指标
执行
vmstat -s | grep "memory"可快速获取内存总量和空闲量。
使用/proc/meminfo文件获取原始数据
/proc/meminfo是Linux内核提供的内存信息虚拟文件,包含更详细的内存参数,通过cat /proc/meminfo可以查看所有内存相关指标,如:
MemTotal:总物理内存MemFree:完全空闲内存Buffers:块设备缓冲区Cached:文件缓存Slab:内核数据结构缓存Dirty:待写入磁盘的脏页
使用smem工具分析内存占用
smem工具提供更精确的内存占用分析,特别是区分进程的物理内存和虚拟内存,安装后执行smem -u可以显示每个进程的Unique Set Size(USS),即进程独占的物理内存,排除了共享内存的重复计算,这对于识别内存泄漏或高内存占用进程特别有用。
内存使用情况分析表格
| 指标 | 含义 | 查看命令 |
|---|---|---|
| MemTotal | 总物理内存 | free /proc/meminfo |
| MemFree | 完全空闲内存 | free /proc/meminfo |
| Buffers | 块设备缓冲区 | free /proc/meminfo |
| Cached | 文件系统缓存 | free /proc/meminfo |
| SwapTotal | 总交换空间 | free /proc/meminfo |
| SwapFree | 空闲交换空间 | free /proc/meminfo |
| Active | 活跃内存(常被使用) | vmstat -s |
| Inactive | 不活跃内存(可被回收) | vmstat -s |
| Slab | 内 slab 缓存 | /proc/meminfo |
| PageTables | 页表内存 | /proc/meminfo |
内存优化建议
- 清理缓存:通过
echo 1 > /proc/sys/vm/drop_caches清理缓存(需root权限)。 - 调整swappiness:修改
/etc/sysctl.conf中的vm.swappiness值(默认60),降低可减少交换使用。 - 分析高内存进程:使用
ps aux --sort=-%mem找出内存占用最高的进程,必要时终止或优化。
相关问答FAQs
Q1: 为什么free命令显示的已用内存(used)和可用内存(available)之和不等于总内存?
A1: 因为Linux内核会利用部分内存作为文件缓存(buff/cache),这部分内存虽然在used列中,但实际上在内存紧张时可以被释放,因此available列更准确地反映了新进程可用的内存。used = active + inactive + dirty,而available ≈ free + reclaimable_cache。
Q2: 如何判断服务器内存是否不足?
A2: 可通过以下指标综合判断:
free -h中available持续低于总内存的10%;vmstat中si(swap in)和so(swap out)频繁非零;top中多个进程出现内存告警;- 系统响应缓慢或OOM Killer(Out of Memory Killer)终止进程。
此时需检查进程内存占用或考虑增加物理内存。
