使用pmap命令查看进程内存映射详情:pmap PID显示地址、大小、权限和映射来源;pmap -x PID新增RSS(物理驻留内存)、Dirty(脏页)等关键列,用于诊断内存泄漏。

要查看当前运行进程的内存映射详情,核心是使用 pmap 命令配合进程 PID,它直接解析 /proc/PID/maps 并结构化输出各内存段的地址、权限、大小、映射来源及物理驻留情况。
获取目标进程 PID
先确认你要分析的进程 ID。常用方式:
- 按名称查:例如找 nginx,运行
ps aux | grep nginx,第二列即 PID(注意排除 grep 自身那行) - 按用户或资源筛选:如
ps -u www-data -o pid,comm,rss --sort=-rss查该用户下 RSS 最高的进程 - 若已知命令名且唯一,可用
pgrep -f "python server.py"
用 pmap 查基础内存布局
执行 pmap PID(如 pmap 1234),输出包含:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- Address:内存段起始地址(十六进制)
- Kbytes:该段虚拟大小(KB)
- Mode:读写执行权限(如
---p表示只读私有,rwxp表示可读写执行) - Mapping:映射来源,常见有
[heap]、[stack]、[anon]、共享库路径(如/lib/x86_64-linux-gnu/libc-2.31.so)或文件路径
用 pmap -x 查物理内存占用(关键)
运行 pmap -x PID,新增三列:
-
RSS:该段当前驻留在 RAM 的物理页大小(KB),所有行 RSS 之和 ≈ 进程真实物理内存占用(接近
ps的 RSS 或top的 RES) - Dirty:该段中被修改过、尚未写回磁盘的页大小(KB),值高可能意味着频繁写入或缓存压力
-
Mode 列更明确标出是否为共享(
shared)或私有(private) - 重点关注
[heap]和大块[anon]的 RSS,若持续增长,提示堆内存泄漏风险
补充:直接读 /proc 查原始信息
若需底层细节或脚本调用,可直接查看:
-
cat /proc/PID/maps:原始内存段列表(无 RSS,仅地址/权限/偏移/设备/路径) -
cat /proc/PID/smaps:每段的详细统计(含 Rss、Pss、Shared_Clean 等),适合精确分析共享内存分摊 -
grep VmRSS /proc/PID/status:快速获取总 RSS 值(单位 kB),与pmap -x最后一行 total 基本一致

















