网站首页 > 博客文章 正文
pmap:pmap 是一个 Linux 系统下的工具,用于显示指定进程的内存映射信息。它对调试和分析进程的内存使用情况非常有用。
一、语法
pmap [选项] PID
二、选项
- -x, --extended:显示详细信息。
- -X:显示更详细的信息。
警告:格式会根据 /proc/PID/smaps 的内容而变化。 - -XX:显示内核提供的所有信息。
- -c, --read-rc:读取默认的配置文件 (rc)。
- -C, --read-rc-from=<file>:从指定文件读取配置文件。
- -n, --create-rc:创建新的默认配置文件。
- -N, --create-rc-to=<file>:创建新的配置文件并保存到指定文件中。
注意:使用 -n 或 -N 时,不能指定进程 ID 参数。 - -d, --device:显示设备格式信息。
- -q, --quiet:不显示头部和尾部信息。
- -p, --show-path:在映射信息中显示路径。
- -A, --range=<low>[,<high>]:将结果限制在指定的地址范围内。
- -h, --help:显示帮助信息并退出。
- -V, --version:输出版本信息并退出。
三、示例
- 显示更详细的信息(包括大小、RSS、PSS、共享和私有内存等)。
pmap -x 1234
- 汇总显示进程的内存占用统计。
pmap -d PID
四、示例分析
运行 pmap -x `pidof dockerd`会输出:
Address Kbytes RSS Dirty Mode Mapping
000000c000000000 61440 24216 24216 rw--- [ anon ]
000000c003c00000 4096 0 0 ----- [ anon ]
000055a3db326000 22528 0 0 r---- dockerd
000055a3dc926000 30452 1452 0 r-x-- dockerd
000055a3de6e3000 4456 884 0 r---- dockerd
000055a3deb3e000 29152 8128 6076 r---- dockerd
000055a3e07b6000 1212 732 720 rw--- dockerd
000055a3e08e5000 340 160 160 rw--- [ anon ]
000055a3e16ca000 132 20 20 rw--- [ anon ]
00007fbd18000000 132 4 4 rw--- [ anon ]
00007fbd18021000 65404 0 0 ----- [ anon ]
00007fbd1dffc000 4 0 0 ----- [ anon ]
00007fbd1dffd000 8192 8 8 rw--- [ anon ]
00007fbd1e7fd000 4 0 0 ----- [ anon ]
00007fbd1e7fe000 8192 8 8 rw--- [ anon ]
00007fbd1effe000 4 0 0 ----- [ anon ]
00007fbd1efff000 8192 8 8 rw--- [ anon ]
00007fbd1f7ff000 4 0 0 ----- [ anon ]
各列含义
- Address:内存地址范围的起始地址。
- Kbytes:该内存区域的大小(以 KB 为单位)。
- RSS (Resident Set Size):驻留内存量,表示实际占用物理内存的大小(以 KB 为单位)。
- Dirty:脏页的大小,表示被修改但尚未写回磁盘的内存量(以 KB 为单位)。
- Mode:内存权限模式:
- r:可读
- w:可写
- x:可执行
- p:私有(写时复制)
- s:共享
- Mapping:该内存映射关联的文件或区域名称:
- [heap]:堆内存
- [stack]:栈内存
- /path/to/file:文件映射
- [anon]:匿名内存映射
- 最后一行会显示:
total kB:总结进程使用的虚拟内存、物理内存和脏内存总量。
五、应用场景
- 调试内存泄漏:结合 RSS 和 Dirty 判断某些内存区域是否异常增长。
- 分析进程内存结构:查看栈、堆以及文件映射区域的内存使用情况。
- 性能优化:定位高内存占用模块,减少内存使用。
如需更深入的分析,可以结合 smaps 文件(位于 /proc/<PID>/smaps)获取更详细的内存统计数据。
"码字不易!喜欢就点个赞吧,你的支持是我继续分享的动力!"
猜你喜欢
- 2024-12-28 微波人体运动检测模块
- 2024-12-28 Pycaret 3.0的RC版本已经发布了,什么重大的改进呢?
- 2024-12-28 前端安全究竟该怎么做?从一个安全漏洞说起......
- 2024-12-28 sqlite wal 分析
- 2024-12-28 网络安全渗透之主机持久化
- 2024-12-28 2022 SUO | PURE-01试验数据再更新,MIBC新辅助免疫治疗添佳绩
- 2024-12-28 号外!号外!二青会惠民项目和场次票价统一定为10元/张
- 2024-12-28 奇怪的磁滞曲线
- 2024-12-28 利用mailx做个最简单却很实用的邮件告警服务
- 2024-12-28 写金句的终极奥秘
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)