在 Linux 中查看进程内存占用的方法
在 Linux 系统中,有多种方法可以查看进程或程序的内存使用情况。以下是几种常用的方法:
1. 使用 top
命令
top
是一个实时监控系统进程和资源使用情况的工具。
1 |
top |
- 运行后按
M
键可以按内存使用排序 - 主要关注
RES
(常驻内存) 和%MEM
(内存使用百分比) 列 - 按
q
退出
2. 使用 htop
命令 (更友好的交互式工具)
1 |
htop |
- 需要先安装:
sudo apt install htop
(Ubuntu/Debian) 或sudo yum install htop
(CentOS/RHEL) - 界面更直观,可以直接用鼠标点击列名排序
- 显示的信息与
top
类似但更易读
3. 使用 ps
命令
1 |
ps aux | grep [进程名] |
或查看特定进程:
1 |
ps -p [PID] -o %mem,rss,cmd |
%mem
:内存使用百分比rss
:常驻内存集大小 (KB)vsz
:虚拟内存大小 (KB)
4. 使用 pmap
命令
查看进程的详细内存映射:
1 |
pmap -x [PID] |
- 显示进程的内存使用详情
-x
选项显示扩展信息- 最后一行会显示总内存使用量
5. 查看 /proc/[PID]/status
文件
1 |
cat /proc/[PID]/status | grep -i vm |
或查看内存概要:
1 |
cat /proc/[PID]/status | grep -E 'VmSize|VmRSS|VmData|VmStk|VmExe|VmLib' |
VmSize
:虚拟内存大小VmRSS
:实际使用的物理内存VmData
:数据段大小VmStk
:堆栈大小VmExe
:可执行内存大小VmLib
:共享库内存大小
6. 使用 free
命令查看系统总体内存使用
1 |
free -h |
-h
选项以人类可读格式显示 (GB/MB/KB)- 显示系统总内存、已用内存、空闲内存等信息
7. 使用 smem
命令 (需要安装)
1 2 3 4 |
sudo apt install smem # Ubuntu/Debian sudo yum install smem # CentOS/RHEL smem -s rss -k -u |
- 按实际内存使用排序 (
-s rss
) -k
显示单位为 KB-u
按用户分组
理解内存指标
- VIRT/VmSize:虚拟内存总量 (包括共享库、分配但未使用的内存等)
- RES/RSS:实际使用的物理内存 (不包括交换分区)
- SHR:共享内存大小 (多个进程共享的内存)
- %MEM:占物理内存的百分比
实际应用示例
- 查找 Java 进程的内存使用:
1 |
ps aux | grep java |
- 查看进程 ID 为 1234 的详细内存信息:
1 |
pmap -x 1234 |
- 按内存使用排序所有进程:
1 |
top -o %MEM |
- 持续监控特定进程的内存:
1 |
watch -n 1 'ps -p [PID] -o %mem,rss,cmd' |
选择哪种方法取决于你需要查看的详细程度和使用的便利性。对于快速查看,top
或 htop
是最方便的;如果需要更详细的分析,pmap
和 /proc
文件系统提供更多信息。