服务器看内存命令
核心命令速查:

- Linux/Unix:
free -h(最常用,人性化显示)cat /proc/meminfo(最详细原始信息)top(动态监控,含内存)htop(top增强版,推荐)vmstat -s(统计摘要)
- Windows:
任务管理器(图形界面)资源监视器(图形界面,更详细)wmic memorychip list full(命令行,查看物理内存条)systeminfo | findstr /C:"Total Physical Memory" /C:"Available Physical Memory"(命令行,基础信息)Get-Counter 'Memory' | Select-Object -ExpandProperty CounterSamples | Select-Object InstanceName, CookedValue(PowerShell,全面性能计数器)
准确掌握服务器内存使用情况是系统管理、性能调优和故障排查的基石,不同操作系统提供了丰富的命令行工具,让管理员能够快速、深入地洞察内存状态。
Linux/Unix 服务器内存查看命令
free – 查看内存和交换空间使用概览
free 是最常用、最直观的命令,添加 -h 选项(free -h)以人类可读的格式(GB, MB)显示结果,避免解读字节数的困扰。
典型输出解读:
total used free shared buff/cache available
Mem: 62G 5.2G 512M 1.3G 56G 55G
Swap: 31G 512M 31G
- total: 物理内存总量。
- used: 已被系统使用的内存(包含 buffers/cache)。
- free: 完全未被使用的内存。
- shared: 主要被 tmpfs(内存文件系统)使用的内存。
- buff/cache: 内核缓冲区(buffers)和页面缓存(cache)占用的内存,这部分内存在应用程序需要时可以被快速回收,通常不意味着内存不足。
- available: 关键指标! 估算在不进行交换(swap)的情况下,可用于启动新应用程序的内存量,它考虑了 free 内存和可回收的 buffer/cache,此值接近或低于总内存的 20% 需警惕。
- Swap: 交换分区信息(total, used, free),频繁的 swap 使用(
used值持续增长或较高)是物理内存不足的强烈信号,会显著拖慢性能。
/proc/meminfo – 内存信息的终极详情
cat /proc/meminfo 提供最详尽、最底层的服务器内存统计数据,所有其他内存工具(如 free, top)的数据均来源于此文件。
关键字段解读:
MemTotal: 同free的total。MemFree: 同free的free。MemAvailable: 同free的available(估算值)。Buffers: 块设备(如磁盘)的缓冲区大小。Cached: 页面缓存大小(文件缓存)。SwapCached: 曾被换出、但又被换入且仍在 swap 中有备份的缓存(可快速再次换出)。Active: 最近活跃使用的内存(不易回收)。Inactive: 相对不活跃的内存(较易回收)。SwapTotal,SwapFree: 交换空间总量和剩余量。Dirty: 等待写回磁盘的内存页大小。Writeback: 正在被写回磁盘的内存页大小。Slab,SReclaimable,SUnreclaim: 内核 slab 分配器占用内存(可回收/不可回收部分)。
专业建议: 当 free 等工具显示内存紧张但 buff/cache 很高时,深入查看 /proc/meminfo 中的 Slab、SReclaimable 和 SUnreclaim 可以帮助判断是否内核数据结构消耗过多。

top/htop – 动态进程与资源监控
top 提供实时动态的系统状态视图,按进程展示资源消耗(包括内存),按 Shift+M 可按内存使用率排序进程。
htop 是 top 的现代化替代品,功能更强大,界面更直观(支持鼠标操作、彩色显示、树状视图等),强烈推荐安装使用,同样按 F6 可选择按内存排序 (MEM%)。
内存相关列:
VIRT(Virtual Memory): 进程使用的虚拟内存总量。RES(Resident Memory): 进程实际使用的、未被换出的物理内存大小,这是进程消耗物理内存的关键指标。SHR(Shared Memory):RES中可被其他进程共享的部分(如共享库)。%MEM: 进程使用的RES占物理内存总量的百分比。
vmstat – 报告虚拟内存统计信息
vmstat -s 以更结构化的方式输出 /proc/meminfo 中的关键摘要信息,方便一次性查看总量。
vmstat 2 5 (每2秒采样一次,共5次) 则提供动态变化的概览,关注 memory 部分的 swpd (已用交换空间)、free (空闲内存)、buff (缓冲)、cache (缓存),以及 swap 部分的 si (每秒换入内存量)、so (每秒换出内存量),持续的 si/so 大于0表明系统在频繁交换,性能严重受损。
Windows 服务器内存查看命令
图形界面工具
- 任务管理器 (Ctrl+Shift+Esc): “性能”标签页 -> “内存”,提供总量、使用量、可用量、缓存、分页池/非分页池、速度、使用槽位等直观信息,是快速检查的首选。
- 资源监视器 (resmon): “内存” 标签页提供极其详细的信息:
- 物理内存使用情况(使用中、备用、已修改、可用)。
- 每个进程的物理内存使用情况(工作集、可共享、私有)。
- 硬错误(缺页中断)频率,过高表明内存紧张导致频繁磁盘交换。
命令行工具
-
wmic memorychip list full: 查询物理内存硬件信息,包括每个内存条的容量、速度、类型、制造商、序列号、插槽位置等,用于硬件清点或故障排查。
-
systeminfo | findstr /C:"Total Physical Memory" /C:"Available Physical Memory": 快速获取物理内存总量和当前可用物理内存量,脚本中常用。 -
PowerShell (Get-Counter): 最强大的命令行内存监控工具,访问 Windows 性能计数器:
# 获取关键内存计数器快照 Get-Counter 'MemoryAvailable Bytes', 'Memory% Committed Bytes In Use', 'MemoryPage Faults/sec', 'Paging File(_Total)% Usage' # 持续监控(每2秒一次,共5次) Get-Counter 'Memory', 'Paging File(_Total)' -SampleInterval 2 -MaxSamples 5 | Format-List -Property Path, CookedValue # 查询每个进程的工作集(私有工作集更准确反映独占内存) Get-Process | Sort-Object WS -Descending | Select-Object Name, WS, PM, VM, Id -First 10
关键计数器:
MemoryAvailable Bytes: 可用物理内存。Memory% Committed Bytes In Use: 已提交内存占提交上限的百分比(重要!持续>80%表示内存紧张)。MemoryPage Faults/sec: 缺页中断总数(硬错误+软错误),硬错误(MemoryPage Reads/sec)高需警惕。Paging File(_Total)% Usage: 分页文件使用率。
专业建议与关键洞察
free命令的误区: Linux 下看到free内存少不必惊慌,Linux 会最大限度利用内存做缓存(buff/cache),关注available列才是判断内存是否充裕的金标准,Windows 同理,关注“可用”或“备用”内存而非“空闲”。- Swap 是双刃剑: Swap 防止了 OOM(Out-Of-Memory)崩溃,但频繁交换(
si/so, 高 Page Reads/Sec, 高硬错误)会带来灾难性性能下降。Swap 被持续使用是物理内存需要扩容的明确信号。 - 区分内存类型:
- 物理内存不足:
available/MemAvailable/Available Bytes持续过低,Swap 使用率高且频繁交换。 - 配置限制: Java 应用的
-Xmx, MySQL 的innodb_buffer_pool_size等设置过低,即使物理内存充足,应用自身也会受限。 - 内存泄漏: 特定进程的
RES(Linux) 或Working Set/Private Bytes(Windows) 随时间持续、不可逆地增长,即使重启应用后仍复现。
- 物理内存不足:
- 监控与基线: 使用专业监控系统(Zabbix, Prometheus+Grafana, Nagios, Windows Performance Monitor/Perfmon)建立内存使用基线,设置针对
Available Memory,% Committed Bytes In Use,Swap Usage,Page Faults的告警阈值。历史趋势分析比单次快照更能揭示问题。 - 深入分析工具: 当基础命令无法定位内存消耗根源时:
- Linux:
smem(按 PSS/USS 更准确统计进程内存),valgrind/massif(应用级内存分析),perf,/proc/<pid>/smaps(分析单个进程详细内存映射)。 - Windows: Windows Performance Recorder (WPR) / Windows Performance Analyzer (WPA) 进行深度内存性能分析,
DebugDiag分析内存泄漏和 dump 文件。
- Linux:
你的服务器内存监控策略是怎样的?在实际运维中,最让你头疼的内存问题是什么?是物理资源不足、配置不当、还是难以捉摸的内存泄漏?欢迎在评论区分享你的经验和挑战!
原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/12012.html