Pmap:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
→‎pmap
无编辑摘要
 
(未显示同一用户的3个中间版本)
第4行: 第4行:
  pmap -x <PID>
  pmap -x <PID>


* Address: 内存开始地址
# Address: 虚拟内存区段的起始地址
* Kbytes: 占用内存的字节数(KB)
# Kbytes: 该内存映射的总大小(KB)
* RSS: 保留内存的字节数(KB),实际驻留在 RAM 的内存大小(包括未均摊的共享库大小,不包括已经交换出去的页面)
# RSS: 内存区段的实际驻留内存大小(KB),实际驻留在物理 RAM 大小(包括未均摊的共享库大小,不包括已经交换出去的页面)
* Dirty: 脏页的字节数(包括共享和私有的)(KB)
# Dirty: 脏页的字节数(包括共享和私有的)(KB),表示需要回写到磁盘或其他存储的内存数据量
* Mode: 内存的权限:read、write、execute、shared、private (写时复制)
# Mode: 内存的权限:read、write、execute、shared、private (写时复制)
* Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
# Mapping: 映射类型:占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
<small>
匿名内存(anon): 表示进程内部使用的匿名内存,不对应任何文件。
堆(heap): 通常是动态内存分配(如 `malloc` 或 `new`)所在的区域,大型应用程序的内存消耗常常集中於此
栈(stack): 存储函数局部变量、调用栈和返回地址等
共享库: 共享库或动态链接库(如 .so 文件),多个进程可以共享这些区段
内核或映射文件: 文件对应的映射通常显示具体路径,表示进程加载的程序代码或数据
 
 
 
</small>


{| class="wikitable"
{| class="wikitable"
第82行: 第92行:
|[anon]
|[anon]
|}
|}
可以用 diff 比较两次内存映射的差异。
一般情况下,除 anon 外,其他线程的内存开始地址等相对固定。可以用 diff 比较两次内存映射的差异。


[[分类:Develop]]
[[分类:Develop]]
[[分类:Linux]]
[[分类:Linux]]

2024年12月31日 (二) 13:27的最新版本

pmap

pmap(Process Map) 命令能够显示一个或多个进程的内存映射情况,在 procps-ng 包中。包括分配的地址空间的大小、权限、偏移量、设备和映射到的文件,是理解和分析 Linux 进程内存使用的重要工具。

pmap -x <PID>
  1. Address: 虚拟内存区段的起始地址
  2. Kbytes: 该内存映射的总大小(KB)
  3. RSS: 内存区段的实际驻留内存大小(KB),实际驻留在物理 RAM 大小(包括未均摊的共享库大小,不包括已经交换出去的页面)
  4. Dirty: 脏页的字节数(包括共享和私有的)(KB),表示需要回写到磁盘或其他存储的内存数据量
  5. Mode: 内存的权限:read、write、execute、shared、private (写时复制)
  6. 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 比较两次内存映射的差异。