怎么查看Linux内存被谁占用了

在Linux系统管理和性能优化过程中,内存占用分析是核心任务之一。本文将通过专业工具和结构化数据,详细说明排查内存占用的方法,并提供扩展知识帮助深入理解Linux内存管理机制。
一、内存分析的核心命令工具
1. free - 查看系统内存概况
执行 free -h 可直观显示内存总量、已用量、空闲量及缓存/缓冲区占用情况。以下是关键字段说明:
| 字段 | 描述 | 典型值示例 |
|---|---|---|
| total | 物理内存总量 | 32G |
| used | 已使用内存 | 24G |
| free | 完全空闲内存 | 1.2G |
| shared/buffer/cache | 共享/缓冲区/缓存内存 | 6.8G |
| available | 可用内存估算值 | 7.5G |
2. top/htop - 实时进程监控
通过 %MEM 列可排序进程内存占用。按下 Shift+M 按内存排序显示:
| 列名 | 含义 |
|---|---|
| VIRT | 虚拟内存用量 |
| RES | 常驻物理内存 |
| %MEM | 物理内存占比 |
| SHR | 共享内存量 |
二、高级诊断工具
1. smem - 精准内存统计
安装命令:sudo apt-get install smem。其独特优势在于计算PSS(Proportional Set Size),更准确反映进程实际内存占用:
| 参数 | 作用 |
|---|---|
| -p | 百分比显示 |
| -u | 按用户统计 |
| -k/-m | KB/MB单位 |
2. pmap - 进程内存映射分析
通过 pmap -x [PID] 可查看进程的详细内存分配:
| 列 | 说明 |
|---|---|
| Address | 内存区块起始地址 |
| RSS | 实际物理内存占用 |
| Mapping | 内存区域所属模块 |
三、内核级信息获取
1. /proc/meminfo 文件解析
该文件包含内存使用细节,关键参数包括:
| 参数 | 描述 |
|---|---|
| MemTotal | 总物理内存 |
| Slab | 内核数据结构缓存 |
| PageTables | 页表占用内存 |
| SwapCached | 交换缓冲内存 |
2. slabtop - 内核对象监控
实时显示内核slab分配器缓存,按 c 键可按缓存大小排序,常用于诊断内核级别的内存泄漏。
四、扩展知识:内存类型深度解析
1. Buffer vs Cache差异
2. 内存泄漏排查流程
通过以上工具组合使用,可精准定位内存占用源。建议将关键命令封装为自动化脚本,定期生成内存快照对比分析,这对诊断渐进式内存泄漏尤其有效。