前面的文章中说道NTM可以追踪到堆内内存、code区域、通过unsafe.allocateMemory和DirectByteBuffer申请的内存。
但是NMT不能跟踪C代码的申请的堆外内存的情况,那么NMT诊断后,下面的事情谁来做呢,那么请看测者今天的笔记内容。
pmap提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。主要可以监测进程的地址空间和内存的状态。
pmap -option pid
其中option如下:
-x:显示扩展格式
-d:显示设备格式
-q:不显示头尾行
-V:显示指定版本
[root@locaohost~]#pmap -x 7877
Address Kbytes RSS Dirty Mode Mapping
00000000020e0000 4008 4008 4008 rw--- [ anon ]
00007f789ec2d000 1668 1384 0 r-x-- libc-2.19.so
00007f7884000000 148 92 92 rw--- [ anon ]
00007f787c000000 132 24 24 rw--- [ anon ]
00007f789efce000 16 16 16 r---- libc-2.19.so
00007f7880000000 132 12 12 rw--- [ anon ]
00007f789efd2000 8 8 8 rw--- libc-2.19.so
00007f789edce000 2048 0 0 ----- libc-2.19.so
00007f787c021000 65404 0 0 ----- [ anon ]
00007f7880021000 65404 0 0 ----- [ anon ]
00007f7884025000 65388 0 0 ----- [ anon ]
其中: Address: 内存分配地址 Kbytes: 实际分配的内存大小 RSS: 程序实际占用的内存大小
Mapping: 分配该内存的模块的名称