• cat /proc/maps 进程内存映射【转】


    转自:http://blog.csdn.net/fisher_jiang/article/details/5063852

    proc/<PID>/maps
    查看进程的虚拟地址空间是如何使用的。
    该文件有6列,分别为:
    地址:库在进程里地址范围
    权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;
    偏移量:库在进程里地址范围
    设备:映像文件的主设备号和次设备号;
    节点:映像文件的节点号;
    路径: 映像文件的路径
    每项都与一个vm_area_struct结构成员对应,
    范例:
    应用程序的正文段(权限为r-xp)从0x08048000到0x08049000,大小为4096;数据段从0x08049000到0x0804a000,大小为1KB。该应用程序使用了两个库:lib和libc。Libc 的正文段从0x00391000到0x004b4000,大小为1164KB;数据段从0x004b5000到0x004b8000,大小为12KB.
    Ld 的正文段从00378000到0038d000,大小为84KB;数据段从0x0038e000到0x0038f000,大小为4KB。该应用程序所使用的库所占的虚拟空间的大小从0x4b8000到0x378000,大小为1280KB,其实真正大小为VmLib(1251KB);因为是按页分配,每页大小为4KB。

    [root@localhost ~]# cat /proc/7114/maps
    08047000-080dc000 r-xp 00000000 03:06 884901 /bin/bash
    080dc000-080e3000 rwxp 00094000 03:06 884901 /bin/bash
    080e3000-08129000 rwxp 080e3000 00:00 0 [heap]
    4d575000-4d58a000 r-xp 00000000 03:06 736549 /lib/ld-2.3.4.so
    4d58a000-4d58b000 r-xp 00015000 03:06 736549 /lib/ld-2.3.4.so
    4d58b000-4d58c000 rwxp 00016000 03:06 736549 /lib/ld-2.3.4.so
    4d58e000-4d6b1000 r-xp 00000000 03:06 736550 /lib/tls/libc-2.3.4.so
    4d6b1000-4d6b2000 r-xp 00123000 03:06 736550 /lib/tls/libc-2.3.4.so
    4d6b2000-4d6b5000 rwxp 00124000 03:06 736550 /lib/tls/libc-2.3.4.so
    4d6b5000-4d6b7000 rwxp 4d6b5000 00:00 0
    4d6de000-4d6e0000 r-xp 00000000 03:06 736552 /lib/libdl-2.3.4.so
    4d6e0000-4d6e2000 rwxp 00001000 03:06 736552 /lib/libdl-2.3.4.so
    4d807000-4d80a000 r-xp 00000000 03:06 736567 /lib/libtermcap.so.2.0.8
    4d80a000-4d80b000 rwxp 00002000 03:06 736567 /lib/libtermcap.so.2.0.8
    b7bf2000-b7c1e000 r-xp 00000000 03:06 881337 /usr/lib/gconv/GB18030.so
    b7c1e000-b7c20000 rwxp 0002b000 03:06 881337 /usr/lib/gconv/GB18030.so
    b7c20000-b7c26000 r-xs 00000000 03:06 881502 /usr/lib/gconv/gconv-modules.cache
    b7c26000-b7d2f000 r-xp 02197000 03:06 852489 /usr/lib/locale/locale-archive
    b7d2f000-b7f2f000 r-xp 00000000 03:06 852489 /usr/lib/locale/locale-archive
    b7f2f000-b7f38000 r-xp 00000000 03:06 734450 /lib/libnss_files-2.3.4.so
    b7f38000-b7f3a000 rwxp 00008000 03:06 734450 /lib/libnss_files-2.3.4.so
    b7f3a000-b7f3c000 rwxp b7f3a000 00:00 0
    b7f51000-b7f52000 rwxp b7f51000 00:00 0
    bfc3d000-bfc52000 rw-p bfc3d000 00:00 0 [stack]
    ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]
    [root@localhost ~]#

    参数 解释
    address: 0085d000-00872000 虚拟内存区域的起始和终止地址文件所占的地址空间
    perms:rw-p 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
    offset: 00000000 虚拟内存区域在被映射文件中的偏移量
    dev: 03:08 文件的主设备号和次设备号
    inode: 设备的节点号,0表示没有节点与内存相对应
    name: /lib/ld-2.3.4.so 被映射文件的文件名

    各共享库的代码段,存放着二进制可执行的机器指令,是由kernel把该库ELF文件的代码段map到虚存空间;
    各共享库的数据段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
    用户代码段,存放着二进制形式的可执行的机器指令,是由kernel把ELF文件的代码段map到虚存空间;
    用户数据段之上是代码段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
    用户数据段之下是堆(heap),当且仅当malloc调用时存在,是由kernel把匿名内存map到虚存空间,堆则在程序中没有调用malloc的情况下不存在;
    用户数据段之下是栈(stack),作为进程的临时数据区,是由kernel把匿名内存map到虚存空间,栈空间的增长方向是从高地址到低地址。

  • 相关阅读:
    自动打包脚本
    Tomcat内存溢出问题
    Nginx笔记总结二十:nginx索引目录配置
    Nginx笔记总结十九:nginx + fancy实现漂亮的索引目录
    Nginx笔记总结十八:nginx统计响应的http状态码信息(ngx-http-status-code-counter)
    Nginx笔记总结十七:nginx生成缩略图配置(http_image_filter_module)
    Nginx笔记总结十六:nginx优化指南
    Nginx笔记总结十五:nginx+keepalive+proxy_cache配置高可用nginx集群和高速缓存
    Nginx笔记总结十四: nginx反向代理,用内网域名转发
    Nginx笔记总结十三:nginx 正向代理
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/5660291.html
Copyright © 2020-2023  润新知