怎么在Linux利用Pmap-X分析特定应用进程的内存堆栈及共享库映射分布

雨敏小哥_3781

雨敏小哥_3781

2026-04-28

488人浏览

原创

pmap -x 是查看进程内存分布的关键命令,必须加-x才能显示Size、RSS、Dirty等核心指标;重点关注[heap](堆泄漏嫌疑)、[stack](栈异常)、共享库路径(如/lib64/libc.so.6)和[anon](匿名映射异常)四类标记段。

怎么在linux利用pmap-x分析特定应用进程的内存堆栈及共享库映射分布

用 pmap -x 查特定进程的堆栈和共享库分布,关键不是“看全”,而是“抓重点”:快速识别哪些内存段在涨、哪些映射异常、哪些区域与堆/栈/共享库直接相关。它不分析代码逻辑,但能告诉你内核当前记录的内存布局快照。

确认目标进程 PID 并执行 pmap -x

先用 ps aux | grep your_app 或 pgrep -f "your_app" 找到准确 PID。务必加 -x 参数,否则只显示地址和权限,看不到 KB 单位的大小和 RSS:

  • pmap -x 1234 输出包含三列核心数据:Size(虚拟内存大小)、RSS(实际驻留物理内存)、Dirty(已修改未写回的页)
  • 不加 -x 的输出无法判断内存占用量,等于白跑
  • 若提示 Permission denied,通常是因为进程设置了 PR_SET_DUMPABLE=0 或正被 gdb 附加,需用 root 或检查应用启动配置

从输出中快速定位堆、栈、共享库对应行

pmap 不解析堆内部结构,但会把典型区域打上明确标签。重点关注以下几类 Mapping 字段:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
  • [heap]:代表通过 brk 或 sbrk 扩展的堆区,通常连续且可写;若 Size 和 RSS 持续增长,是堆泄漏首要嫌疑
  • [stack]:主线程栈,一般几十 KB 到几 MB;若出现多个 [stack] 行(如线程栈),或单个 [stack] 超过 8MB,需检查是否递归过深或线程数异常
  • 带路径的 .so 文件:如 /lib64/libc-2.31.so、/usr/lib/x86_64-linux-gnu/libssl.so.1.1,每行对应一个共享库映射段;注意其权限组合(r-x-- 是代码段,rw--- 是数据段)
  • [anon]:匿名映射,包括 mmap(MAP_ANONYMOUS) 分配的大块内存,常见于自定义内存池、JVM Native Memory、Python C 扩展等;大量小块 [anon] 反复出现且不释放,高度提示 malloc/free 不匹配

结合多次采样判断内存增长趋势

pmap 是瞬时快照,单次结果只能看静态分布。要判断是否泄漏,必须横向对比:

  • 间隔 10–30 秒运行多次 pmap -x [PID],提取每轮的总 RSS 和各 [anon]/[heap] 行的 RSS 值
  • 用 awk '{sum += $3} END {print sum}' 快速汇总 RSS 总和($3 是 RSS 列)
  • 若某 [anon] 区域 RSS 从 2MB → 16MB → 64MB 持续翻倍,而应用无预期加载行为,基本可锁定该映射来源为泄漏点
  • 注意区分正常增长(如缓存预热)和异常累积(RSS 涨后不回落)

补充技巧:用 -XX 看页级细节(按需)

当发现可疑 [anon] 或 [heap] 区域时,可用 pmap -XX [PID] 进一步查看是否启用了大页(Huge Page)或存在大量 4KB 小页碎片:

  • 输出中若某段显示 MMUPageSize: 2048 kB,说明用了 2MB 大页,适合大块连续分配
  • 若同一 [anon] 区域由数百个 4KB 页组成且 Dirty 比例高,可能是频繁小内存申请未合并,易引发 TLB 压力
  • 该选项信息密度高,日常排查建议先用 -x 定向,再用 -XX 深挖

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

980

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3432

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1116

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

1009

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

534

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3176

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5992

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

907

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习