我想使用pmap -x
命令在Linux x86-64上查看进程的内存映射。但是,查看pmap的输出让我感到困惑,特别是针对动态库映射的条目。它们有多个条目(实际上大多数都有4个条目,有些只有3个条目)。以下是一个示例:
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
每个库的第二行总是有2MB大小,但没有页面许可。在所有库中,它的RSS似乎始终为零。最后两行也具有相同的大小(即基页大小)和相同的权限(少数库没有rw映射)。有人能解释一下吗?我感觉可能是加载器用只读保护进行映射以读取库的元数据,而具有可执行权限的部分实际上是库的代码。尽管我可能是错的。
但我对那一行毫无头绪。没有权限和没有用途?有人在这里有一些智慧的话吗?
我还看到了一些页面被报告为匿名内存,并且没有设置任何模式位。这些代表什么?