free -h
命令获取总内存及使用概况,或通过top
、htop
实时监控进程内存占用,也可查看/proc/meminfo
文件了解详细内存分配[^1][^2][^3]在Linux系统中,监控内存使用情况是保障系统稳定运行的重要操作,以下是几种常用的内存查看方法及工具,涵盖命令行和系统文件途径,适用于不同场景需求:
基础命令行工具
-
free命令
显示系统内存的整体使用情况,包括总内存、已用内存、空闲内存、缓冲区和交换分区等信息。- 常用选项:
free -h
:以人类可读的格式(如GB、MB)显示内存数据。free -m
:以MB为单位显示数值。free -s 5
:每5秒刷新一次,实时监控内存变化。
- 输出示例:
| 字段 | 含义 |
|————-|——————-|
| total | 总内存 |
| used | 已用内存 |
| free | 空闲内存 |
| shared | 共享内存(多进程) |
| buff/cache | 缓冲区与缓存 |
| available | 可用内存(实际可分配)|
| swap | 交换分区 |
- 常用选项:
-
top/htop命令
- top:动态显示系统资源占用情况,默认按CPU使用率排序,可通过按下
M
键按内存使用率排序,或通过Shift+O
自定义排序字段。 - htop:增强版top工具,支持鼠标操作、垂直/水平滚动条,并高亮显示进程树结构,适合新手。
- 关键列:
RES
:进程实际占用的物理内存。VIRT
:进程虚拟内存(含交换分区)。SHR
:共享内存(如库文件)。
- top:动态显示系统资源占用情况,默认按CPU使用率排序,可通过按下
-
vmstat命令
提供虚拟内存状态的统计信息,适合分析内存与IO瓶颈。- 典型输出:
| 字段 | 含义 |
|————-|—————————-|
| swpd | 已使用的交换内存(KB) |
| free | 空闲内存(KB) |
| buffer | 缓冲区内存(KB) |
| cache | 页面缓存(KB) |
| usrs | 用户态CPU占用率(%) |
| sys | 内核态CPU占用率(%) | - 常用选项:
vmstat 2
每2秒刷新一次,监控短期趋势。
- 典型输出:
系统文件与进阶工具
-
/proc/meminfo文件
直接读取内核内存状态,内容比free
更详细。- 关键参数:
| 参数 | 含义 |
|———————|————————–|
| MemTotal | 总物理内存(KB) |
| MemFree | 空闲内存(KB) |
| Buffers | 缓冲区大小(KB) |
| Cached | 页面缓存(KB) |
| SwapTotal | 交换分区总大小(KB) |
| SwapFree | 空闲交换分区(KB) | - 查看方式:
cat /proc/meminfo | grep "Mem|Swap"
提取核心信息。
- 关键参数:
-
atop与smem工具
- atop:集成了
top
和vmstat
的功能,支持按时间段统计内存使用趋势,适合长期监控。 - smem:专门用于分析内存分布,可显示进程的实际内存、共享内存及内核开销,适合排查内存泄漏。
- atop:集成了
场景化应用与优化
-
实时监控
结合watch
命令实现定时刷新:watch -d -n 1 "free -h" # 每秒高亮显示内存变化
-
进程级内存分析
- 使用
ps
命令筛选特定进程:ps aux --sort=-%mem | head -n 10 # 按内存占用排序前10名
- 或通过
top
交互界面定位高消耗进程。
- 使用
-
交换分区管理
- 当
free
命令中swap
列持续增加时,可能需调整swappiness
参数(通过修改/proc/sys/vm/swappiness
),控制交换频率。
- 当
FAQs
-
如何查看某个进程的内存占用细节?
使用pid
配合smem
或pmap
命令。smem -p $(pgrep firefox) # 查看Firefox进程的内存分布 pmap -x $(pgrep chrome) # 显示Chrome的内存映射
-
如何释放被缓存占用的内存?
可手动同步缓存并清理:sync; echo 3 > /proc/sys/vm/drop_caches # 清除页缓存、目录项和inode缓存
注意:此操作仅暂时增加
free
内存,实际数据仍在磁盘中,需谨慎使用。
通过以上工具和方法,可全面掌握Linux系统的内存使用情况,为性能
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/69012.html