可使用ps、top、pmap、/proc/[pid]/status或smem命令定位进程内存消耗:ps快速筛查,top动态监控,pmap分析内存映射,/proc/[pid]/status提供内核级精确统计,smem通过PSS公平评估共享内存占用。

如果您需要定位某个特定进程的内存消耗情况,但不确定其具体占用数值,则可能是由于缺乏对进程级内存指标的准确读取手段。以下是查看单个进程内存使用情况的多种方法:
一、使用 ps 命令筛选并排序进程内存信息
ps 命令可一次性输出所有进程的内存占用快照,并支持按内存百分比或物理内存大小排序,适用于快速筛查高内存消耗进程。
1、执行命令列出所有进程并按内存占用百分比降序排列:ps aux --sort=-%mem
2、若只关注 nginx 进程,添加 grep 过滤:ps aux | grep nginx
3、仅显示前5个内存占用最高的进程:ps aux --sort=-%mem | head -5
4、输出指定字段(PID、用户、%MEM、RSS、COMMAND)并排序:ps -eo pid,user,%mem,rss,comm --sort=-%mem
二、使用 top 命令动态监控并聚焦目标进程
top 提供交互式界面,允许实时观察进程内存变化,并可通过筛选与排序快速锁定目标进程。
1、启动 top:top
2、按下 M 键,使进程列表按 %MEM 降序排列
3、按下 o 键进入筛选模式,输入 COMMAND=java(将 java 替换为实际进程名)
4、确认筛选后,界面仅显示匹配进程;按 q 退出
三、使用 pmap 命令查看进程内存映射详情
pmap 可展示进程地址空间中每一内存段的类型、大小及权限,适用于分析内存泄漏或共享库占用异常等深层问题。
1、获取目标进程 PID(例如 nginx 主进程):pgrep nginx | head -1
2、用该 PID 查看详细内存分布:pmap -x $(pgrep nginx | head -1)
3、关键字段含义:Address 表示起始地址,Kbytes 为占用千字节数,RSS 为实际驻留物理内存,Mode 为访问权限
四、读取 /proc/[pid]/status 获取精确内存统计
/proc 文件系统为每个进程提供实时内核状态视图,其中 status 文件包含权威、细粒度的内存指标,不依赖外部工具解析。
1、查找目标进程 PID:pidof nginx 或 pgrep -f "nginx: master"
2、查看其内存状态:cat /proc/$(pidof nginx)/status | grep -E "^(VmSize|VmRSS|VmData|VmStk|VmExe|VmLib)"
3、重点关注 VmRSS(实际物理内存)、VmSize(虚拟内存总量)和 VmData(数据段大小)
五、使用 smem 命令分析比例化内存占用(PSS)
smem 能计算 PSS(Proportional Set Size),将共享内存按参与进程数均摊,更公平地反映单个进程的真实内存开销。
1、安装 smem(如未预装):sudo apt install smem(Debian/Ubuntu)或 sudo yum install smem(RHEL/CentOS)
2、按 PSS 排序全部进程:smem -s pss -r
3、仅显示指定进程(如 java)的 PSS 统计:smem -P java -s pss
4、输出中 PSS 值单位为 KB,比 RSS 更能体现多进程共享场景下的真实资源归属

















