pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。
Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。
一、使用用法
Usage: pmap [-x | -d] [-q] [-A low,high] pid...
-x show details 显示详细信息
-d show offset and device number 显示文件偏移和设备名
-q quiet; less header/footer info 不显示头尾行
-A limit results to the given range
1.1、扩展格式和设备格式域
Address: start address of map 映像起始地址
Kbytes: size of map in kilobytes 映像大小
RSS: resident set size in kilobytes 驻留集大小
Dirty: dirty pages (both shared and private) in kilobytes 脏页大小
Mode: permissions on map 映像权限:
r=read, w=write, x=execute, s=shared, p=private (copy on write)
Mapping: file backing the map , or ‘[ anon ]’ for allocated memory, or ‘[ stack ]’ for the program stack. 映像支持文件,[anon]为已分配内存 [stack]为程序堆栈
Offset: offset into the file 文件偏移
Device: device name (major:minor) 设备名
1.2、使用示例
[root@gudcloud ~]# pmap 26511 -d
26511: nginx: master process /usr/local/nginx/sbin/nginx
Address Kbytes Mode Offset Device Mapping
0000000000400000 844 r-x– 0000000000000000 0fc:00001 nginx
00000000006d2000 108 rw— 00000000000d2000 0fc:00001 nginx
……………
00007fffc1a90000 4 r-x– 0000000000000000 000:00000 [ anon ]
ffffffffff600000 4 r-x– 0000000000000000 000:00000 [ anon ]
mapped: 56156K writeable/private: 12352K shared: 4K
1、mapped
表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz
2、writeable/private
表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小
3、shared
表示进程和其他进程共享的内存大小
1.3、持续查看进程占用的内存情况
[root@gudcloud ~]# while true; do pmap -d 3066 | tail -1; sleep 2; done
mapped: 5412K writeable/private: 2028K shared: 0K
mapped: 5412K writeable/private: 2028K shared: 0K