简介
pmap - report memory map of a process 进程的内存映射报告
语法:
pmap [options] pid [...]
选项
选项 | 含义 |
-x | 显示扩展的信息 |
-X | 显示比-x更详细的信息。但是会按照文件/proc/PID/smaps改变显示格式(显示的信息是该文件内容的简化) |
-XX | 显示一切内核提供的信息 |
-d, --device | 以设备格式显示 |
-q, --quiet | 不显示头尾信息 |
-p, --show-path | 在映射中显示路径 |
-A, --range=<low>[,<high>] | 只显示指定范围的地址空间,低地址和高地址分别用low和high指定,以逗号分隔 |
-h, --help | 打印帮助 |
-V, --version | 输出版本信息 |
使用示例
# pmap -d 537 |less 537: /usr/sbin/NetworkManager --no-daemon Address Kbytes Mode Offset Device Mapping 00007fff8148b000 132 rw--- 0000000000000000 000:00000 [ stack ] 00007fff814fb000 8 r-x-- 0000000000000000 000:00000 [ anon ] ffffffffff600000 4 r-x-- 0000000000000000 000:00000 [ anon ] mapped: 478476K writeable/private: 26940K shared: 28K
补充:
什么是虚拟内存?
虚拟内存作为一种逻辑层,处于应用程序的内存请求与硬件内存管理单元(Memory Management Unit,MMU)之间。
虚拟内存的用途和特点:
- 若干个进程可以并发地执行
- 应用程序所需内存大于可用物理内存时也可以运行
- 程序只有部分代码装入内存时进程可以执行它
- 允许每个进程访问可用物理内存的子集
- 进程可以共享库函数或程序的一个单独内存映像
- 程序是可重定位的,也就是说,可以把程序放在物理内存的任何地方
- 程序员可以编写与机器无关的代码,可以不关心物理内存的组织结构
虚拟内存子系统的主要成分是虚拟地址空间(virtual addres space)的概念。进程所使用的一组内存地址不同于物理内存地址。当进程使用一个虚拟地址时,内核和MMU协同定位其在内存中的实际物理位置。
现代CPU包含自动把虚拟地址转换成物理地址的硬件电路,为了达到这个目标,把可用RAM划分成长度为4KB或8KB的页框(page frame),引入一组页表来指定虚拟地址和物理地址之间的对应关系。这样一块连续的虚拟地址请求可以通过分配一组非连续的物理地址页框得到满足。