跳转至

pmap

pmap 是一个用于查看进程内存映射的命令行工具,通常用于分析进程的内存使用情况。

1 语法

pamp 显示的内容较多,一般我们直接输出到文件,`pmap [option] pid > file`
  • pmap [options] pid [...]

1.1 常用参数

pmap 是一个用于查看进程内存映射的命令行工具,通常用于分析进程的内存使用情况。以下是一些常用的 pmap 参数和选项:

  1. -x:显示详细信息。使用此选项将显示更多关于内存映射的详细信息,包括每个映射的起始地址、权限、偏移量等。
  2. -d:显示以字节为单位的内存映射大小。默认情况下,pmap 显示内存映射的大小以 KBytes 为单位,但使用 -d 选项将以字节为单位显示。
  3. -q:安静模式。禁用标题行的输出,仅显示内存映射的详细信息。
  4. -p:指定要查看的进程 ID。通过此选项,您可以指定要分析的特定进程,而不是当前 shell 中的进程。
  5. -h:以人类可读的格式显示内存大小。这将以更易读的方式显示内存映射的大小,如 KB、MB 或 GB。
  6. -N:以内存映射名称进行排序。使用此选项可以按照内存映射的名称对输出进行排序。
  7. -t:按照内存映射的起始地址进行排序。使用此选项可以按照内存映射的起始地址对输出进行排序。
  8. -X:显示扩展信息。此选项将显示更多与进程内存相关的信息,如共享内存段、堆栈信息等。
  9. -A:显示所有内存映射。默认情况下,pmap 只显示正在使用的内存映射,使用此选项将显示所有内存映射,包括未使用的部分。
  10. -F:强制显示所有内存映射。与 -A 类似,但它将强制显示所有内存映射,即使它们被标记为不可访问或不可用。

1.2 输出解释

这是一个进程的 pmap 输出示例:

Address           Kbytes     RSS   Dirty Mode   Mapping
0000555555554000      84      52       0 r-x--  my_program
0000555555555000       4       4       4 r----  my_program
0000555555556000       4       4       4 rw---  my_program
00007ffff7a40000    1644     316       0 r-x--  libc-2.33.so
00007ffff7b9a000    2048     220       0 -----  libc-2.33.so
00007ffff7db9000      16      16      16 r----  libc-2.33.so
00007ffff7dbd000       4       4       4 rw---  libc-2.33.so
...
  • Address: 此列显示内存映射区域的起始地址。
  • Kbytes: 内存映射的总大小,以千字节为单位。
  • RSS (Resident Set Size): 当前在 RAM 中的内存映射部分的大小(以千字节为单位)。这表示进程实际使用的物理内存。
  • Dirty: 内存映射中已修改的部分(以千字节为单位)。这表示需要写回磁盘的内存量。
  • Mode: 此列显示与内存映射相关的权限:
  • Mapping: 此列通常提供了已映射区域的描述,可以是共享库或可执行文件的名称。

1.2.1 Mode

pmap 输出结果中的 "mode" 列表示内存映射的权限和特性,它通常由一个字符串表示,其中包含以下标志的组合:

  • r:表示可读权限(Read),允许从内存映射中读取数据。
  • w:表示可写权限(Write),允许向内存映射中写入数据。
  • x:表示可执行权限(eXecute),允许从内存映射中执行代码。
  • s:表示共享权限(Shared),多个进程可以共享相同的内存映射。
  • p:表示私有权限(Private),内存映射是进程私有的,不与其他进程共享。

以下是一些示例 "mode" 列及其含义:

  • rw-p:可读可写,私有映射。
  • r-xp:可读可执行,私有映射。
  • r--s:只读,共享映射。

这些权限标志是用来描述内存映射的访问权限的,对于理解进程如何使用内存非常重要。例如,如果您看到一个内存映射的 "mode" 是 rwxp,那么它表示该内存区域可读、可写、可执行,并且是私有的,只属于当前进程。如果 "mode" 是 r--s,则表示该内存区域只读,并且是共享的,其他进程可能会共享相同的内存映射。

1.3 不同参数输出结果显示

  • pmap
  • pmap -x
  • pmap -X
  • pmap -XX
  • pmap -d
  • pmap -p

2 案例分析