如何获取进程的总内存占用(含Swap交换空间)?
获取进程含交换空间的总内存占用
要统计进程实际使用的物理内存+交换空间总占用,你可以用以下几种实用方法:
方法1:读取/proc文件系统(最直接准确)
每个进程的内存数据都由内核实时记录在/proc/<PID>/status文件中,其中关键字段:
VmRSS:进程当前占用的物理内存(和/usr/bin/time -v里的Maximum resident set size对应)VmSwap:进程换出到交换空间的内存大小
直接读取这两个字段并相加,就是总内存占用:
# 替换<PID>为目标进程的ID grep -E 'VmRSS|VmSwap' /proc/<PID>/status
输出示例:
VmRSS: 123456 kB
VmSwap: 65432 kB
如果需要统计运行期间的峰值,你可以定时采样这个文件的数据,记录最大值即可。
方法2:使用ps命令快速查看
ps支持直接输出进程的物理内存和交换空间占用,通过-o参数指定需要的字段:
ps -o pid,rss,swap,cmd -p <PID>
字段说明:
rss:物理内存占用(单位kB)swap:交换空间占用(单位kB)
将这两列数值相加,就能得到该进程的总内存占用。去掉-p <PID>参数可查看所有进程的对应数据。
方法3:使用pmap查看内存映射详情
pmap可以展示进程的内存映射分区,通过-x参数查看扩展统计信息:
pmap -x <PID> | tail -2
输出的最后两行会汇总进程的整体内存使用:
total kB 1234567 123456 65432
^^^ 此列为总swap占用
其中第三列是RSS(物理内存),第四列是Swap占用,两者相加即为总内存。
方法4:用top实时监控
在top界面中操作:
- 按下
f键进入字段选择界面 - 找到
SWAP字段,按空格选中 - 按下
q返回主界面
此时你能看到每个进程的RES(物理内存)和SWAP列,两者之和就是该进程的总内存占用。按下O键还可以选择按SWAP或RES排序。
内容的提问来源于stack exchange,提问作者Thorkil Værge
相关产品推荐
相关产品推荐

