Pmap:修订间差异
跳到导航
跳到搜索
(→pmap) |
无编辑摘要 |
||
(未显示同一用户的2个中间版本) | |||
第4行: | 第4行: | ||
pmap -x <PID> | pmap -x <PID> | ||
# Address: 虚拟内存区段的起始地址 | |||
# Kbytes: 该内存映射的总大小(KB) | |||
# RSS: 内存区段的实际驻留内存大小(KB),实际驻留在物理 RAM 大小(包括未均摊的共享库大小,不包括已经交换出去的页面) | |||
# Dirty: 脏页的字节数(包括共享和私有的)(KB),表示需要回写到磁盘或其他存储的内存数据量 | |||
# Mode: 内存的权限:read、write、execute、shared、private (写时复制) | |||
# Mapping: 映射类型:占用内存的文件、或[anon](分配的内存)、或[stack](堆栈) | |||
<small> | |||
匿名内存(anon): 表示进程内部使用的匿名内存,不对应任何文件。 | |||
堆(heap): 通常是动态内存分配(如 `malloc` 或 `new`)所在的区域,大型应用程序的内存消耗常常集中於此 | |||
栈(stack): 存储函数局部变量、调用栈和返回地址等 | |||
共享库: 共享库或动态链接库(如 .so 文件),多个进程可以共享这些区段 | |||
内核或映射文件: 文件对应的映射通常显示具体路径,表示进程加载的程序代码或数据 | |||
</small> | |||
{| class="wikitable" | {| class="wikitable" |
2024年12月31日 (二) 13:27的最新版本
pmap
pmap(Process Map) 命令能够显示一个或多个进程的内存映射情况,在 procps-ng 包中。包括分配的地址空间的大小、权限、偏移量、设备和映射到的文件,是理解和分析 Linux 进程内存使用的重要工具。
pmap -x <PID>
- Address: 虚拟内存区段的起始地址
- Kbytes: 该内存映射的总大小(KB)
- RSS: 内存区段的实际驻留内存大小(KB),实际驻留在物理 RAM 大小(包括未均摊的共享库大小,不包括已经交换出去的页面)
- Dirty: 脏页的字节数(包括共享和私有的)(KB),表示需要回写到磁盘或其他存储的内存数据量
- Mode: 内存的权限:read、write、execute、shared、private (写时复制)
- Mapping: 映射类型:占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
匿名内存(anon): 表示进程内部使用的匿名内存,不对应任何文件。 堆(heap): 通常是动态内存分配(如 `malloc` 或 `new`)所在的区域,大型应用程序的内存消耗常常集中於此 栈(stack): 存储函数局部变量、调用栈和返回地址等 共享库: 共享库或动态链接库(如 .so 文件),多个进程可以共享这些区段 内核或映射文件: 文件对应的映射通常显示具体路径,表示进程加载的程序代码或数据
Address | Kbytes | RSS | Dirty | Mode | Mapping |
00005650add80000 | 16 | 16 | 0 | r---- | svr |
00007ffd48a0a000 | 132 | 12 | 12 | rw--- | [stack] |
00007f27b7982000 | 4 | 4 | 0 | r---- | ld-2.31.so |
00007f27b76b4000 | 8 | 8 | 8 | rw--- | libc-2.31.so |
00007f27b76dd000 | 12 | 12 | 0 | r---- | libgcc_s.so.1 |
00007f27b74c7000 | 4 | 4 | 4 | rw--- | libm-2.31.so |
00007f27b76ba000 | 24 | 24 | 0 | r---- | libpthread-2.31.so |
00007f27b7969000 | 12 | 12 | 12 | rw--- | libstdc++.so.6.0.32 |
ffffffffff600000 | 4 | 0 | 0 | --x-- | [anon] |
一般情况下,除 anon 外,其他线程的内存开始地址等相对固定。可以用 diff 比较两次内存映射的差异。