在Linux系统中,内存是系统运行的核心资源之一,及时掌握内存使用情况对于系统性能优化、故障排查至关重要,Linux提供了多种命令和工具来查询内存使用状态,下面将详细介绍常用方法及其输出解读。
使用free命令查看内存总量及使用情况
free
是最基础的内存查看命令,通过读取/proc/meminfo
文件生成易读的内存统计信息,适合快速了解系统内存整体使用状态。
基本用法
free free -h # 以人类可读格式显示(如KB、MB、GB) free -m # 以MB为单位显示
输出解读
以free -h
为例,输出包含两行(内存和交换分区)和多个列:
total used free shared buff/cache available
Mem: 7.7G 2.1G 3.2G 256M 2.4G 4.9G
Swap: 2.0G 0B 2.0G
- total:物理内存总容量(如7.7G);
- used:已使用内存(包含应用程序占用、共享内存、缓冲区等);
- free:完全未被使用的内存(3.2G);
- shared:被多个进程共享的内存(如tmpfs文件系统);
- buff/cache:用于缓冲(buffers)和缓存(cached)的内存(2.4G),这部分可被程序回收;
- available:可供新程序使用的内存总量(4.9G),包含可回收的buff/cache,是实际可用的内存参考值(比
free
更准确)。
注意
used
并非仅指应用程序占用的内存,而是包含了系统内核缓冲区和缓存,因此判断内存是否紧张应重点关注available
列,而非used
或free
。
使用top/htop命令动态监控内存使用
top
是实时监控系统资源的工具,可按内存排序查看进程占用情况;htop
是top
的增强版,界面更友好,支持鼠标操作和树状进程视图。
top命令用法
top # 默认按CPU使用率排序,按Shift+M可按内存使用率排序
关键内存相关列
- VIRT:进程虚拟内存总量(包括代码、数据、共享库、交换区等);
- RES:进程常驻内存集(实际物理内存占用,不包括交换区);
- SHR:进程共享内存(如与其他进程共享的库文件);
- %MEM:进程物理内存占用率(RES/总物理内存×100%)。
htop命令优势
安装后(sudo apt install htop
/sudo yum install htop
),可通过颜色区分不同状态进程,按F6选择排序字段(如MEM%),按F5展开进程树,查看父子进程内存关系,更适合复杂场景。
使用vmstat命令查看内存流动状态
vmstat
(Virtual Memory Statistics)可报告进程、内存、交换区、I/O等系统整体状态,适合分析内存压力和交换分区使用趋势。
基本用法
vmstat 1 # 每秒刷新一次,持续输出
关键内存相关字段
- swpd:已使用的交换分区大小(KB);
- free:空闲内存(KB);
- buff:用于缓冲区的内存(KB);
- cache:用于缓存的内存(KB);
- si:从交换区读入内存的数据量(KB/s),反映交换区压力;
- so:写入交换区的数据量(KB/s),若持续大于0,说明物理内存不足,频繁使用交换区会降低性能。
查看/proc/meminfo获取原始内存信息
/proc/meminfo
是内核提供的内存原始数据文件,内容最详细,适合深度排查问题。
查看方式
cat /proc/meminfo
关键字段示例
- MemTotal:物理内存总量;
- MemFree:完全空闲内存;
- Buffers:块设备缓冲区内存;
- Cached:页面缓存(文件系统缓存);
- SwapTotal:交换区分区总量;
- SwapFree:交换区分区空闲量;
- Slab:内核数据结构缓存(如inode、dentry缓存)。
示例输出片段
MemTotal: 8058956 kB
MemFree: 3341560 kB
Buffers: 245752 kB
Cached: 2514440 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
不同命令对比及适用场景
为方便选择,以下总结常用内存查看工具的特点:
命令 | 主要功能 | 适用场景 | 常用选项 |
---|---|---|---|
free | 查看内存总量及使用分布 | 快速了解整体内存状态 | -h (人类可读)、-m (MB) |
top | 实时监控进程内存占用 | 动态观察进程内存变化 | Shift+M (按内存排序) |
htop | 增强版top,支持树状视图等 | 复杂进程内存分析 | F6 (排序)、F5 (进程树) |
vmstat | 内存流动及交换区状态 | 分析内存压力和交换区使用趋势 | 1 (持续刷新) |
/proc/meminfo | 原始内核内存数据 | 深度排查内存问题 | 无(直接查看文件内容) |
相关问答FAQs
Q1:为什么free命令显示的可用内存(available)比MemFree小很多?
A:MemFree
是内核完全未分配的物理内存,而available
是内核评估的可供新程序使用的内存总量,包含了可回收的Cached
(页面缓存)和Buffers
(块缓冲区),Linux会优先使用空闲内存作为缓存,以提高文件读写性能,因此available
通常远大于MemFree
,是判断内存可用性的更准确指标,若available
持续接近0,说明内存紧张,即使MemFree
仍有剩余。
Q2:top和htop在内存监控上有什么区别?如何选择?
A:top是Linux基础工具,功能简单,仅支持键盘操作,界面较简陋,且无法直接查看进程树;htop是第三方增强工具,提供彩色界面、鼠标支持、进程树视图、实时进程过滤等功能,内存监控更直观,若只需快速查看进程内存占用,top足够;若需分析复杂进程关系(如查找内存泄漏的父子进程),或需要更友好的操作体验,推荐使用htop,安装htop可通过包管理器(如sudo apt install htop
或sudo yum install htop
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36347.html