在Linux系统中,查看内存占用情况可以通过多种工具和命令综合分析,以下是详细方法和扩展知识:
1. `top`命令
实时显示系统资源使用情况,按内存排序按`Shift+M`。
关键列说明:
- `RES`:进程实际占用的物理内存(不含Swap)。
- `%MEM`:进程占用物理内存的百分比。
- `VIRT`:虚拟内存总量(包含共享库、Swap等)。
2. `htop`(增强版top)
需安装(`sudo apt install htop`),提供彩面和鼠标交互,支持树状查看进程层级关系。
3. `free -h`
查看整体内存使用概览:
- `used`:已用内存(含缓存/缓冲区)。
- `available`:真正可用的空闲内存(不含缓存)。
扩展:Linux会利用空闲内存作缓存(`buff/cache`),这不是内存泄漏,而是性能优化。
4. `ps`命令组合
bash
ps aux --sort=-%mem | head -10
显示内存占用最高的10个进程,`RSS`列表示物理内存占用(KB)。
5. `pmap -x
分析具体进程的内存映射,显示每个内存段的详细占用(如堆、栈、共享库)。
6. `smem`工具
提供更准确的内存报告(`sudo apt install smem`):
bash
smem -s rss -r -p | head -10
`PSS`(按比例计算的共享内存)更反映真实占用。
7. 内核Slab内存
`slabtop`可查看内核对象缓存,如发现异常占用可能是内核模块问题。
8. `/proc/meminfo`文件
直接读取内存详细信息:
bash
cat /proc/meminfo | grep -E 'MemTotal|MemFree|Buffers|Cached'
9. 排查内存泄漏
- 长期运行的服务可用`valgrind`检测。
- 若`available`持续下降且`slab`/`cache`未增加,可能是应用层泄漏。
10. 图形化工具
GNOME用户可用`gnome-system-monitor`,或远程通过`glances`工具监控。
注意:内存管理机制复杂,需结合多个工具数据判断。如发现`buff/cache`过高,可通过`echo 3 > /proc/sys/vm/drop_caches`临时清理(生产环境慎用)。