当前位置: 首页 > news >正文

进程内存分布--之showmap呈现memory-layout.cpp内存分布

上一篇我们讲了:进程内存分布--之pmap呈现memory-layout.cpp内存分布

我们这里讲一个用于分析内存占用的更直观的方式,showmap来看看会是什么呈现效果:

我们再来使用showmap命令来看下它是怎么呈现内存分布的:

可以看到showmap会把pmap的统计进行汇总,并且计算出各种不同的内存字段大小,如下每个so的大小都体现出来了,更加直观有效评估内存占用大小。

system\memory\libmeminfo\  showmap就是将smaps的虚拟地址计算出大小。

130|OP4E5D:/ # showmap PID | grep -iE "chi|camx|virtual|size|TOTAL|camera"
 virtual                     shared   shared  private  private                   Anon      Shmem     File       Shared   Private
    size      RSS      PSS    clean    dirty    clean    dirty     swap  swapPSS HugePages PmdMapped PmdMapped  Hugetlb  Hugetlb   #  object
     212      212      116      192        0       12        8        0        0         0         0         0        0        0    5 /odm/lib64/libcamxtintlessalgo.so
    5260     2196     2196        0        0     2112       84     2632     2632         0         0         0        0        0    4 /vendor/lib64/hw/com.qti.chi.override.so
      52       52       18       40        0        4        8        0        0         0         0         0        0        0    5 /vendor/lib64/libcamxexternalformatutils.so
    8756     4396     4380       32        0     4364        0        8        8         0         0         0        0        0    4 /vendor/lib64/libcamxfacialfeatures.so
    1364      748      684      128        0      620        0       40       40         0         0         0        0        0    5 /vendor/lib64/libcamxfdalgo.so
    1120      608      560       96        0      512        0        8        8         0         0         0        0        0    5 /vendor/lib64/libcamxfdengine.so
      56       56       56        0        0       56        0        0        0         0         0         0        0        0    1 /vendor/lib64/libcamxifestriping.so
      64       60       60        0        0       56        4        0        0         0         0         0        0        0    4 /vendor/lib64/libcamximageformatutils.so
     164      152      152        0        0      152        0        0        0         0         0         0        0        0    4 /vendor/lib64/libcamxncs.so
      16        0        0        0        0        0        0        4        4         0         0         0        0        0    3 /vendor/lib64/libcamxstatscore.so
      32        0        0        0        0        0        0        8        8         0         0         0        0        0    4 /vendor/lib64/libcamxswispiqmodule.so
      56       56       36       40        0        8        8        0        0         0         0         0        0        0    5 /vendor/lib64/libcamxswprocessalgo.so
      20       20       20        0        0       16        4        0        0         0         0         0        0        0    4 /vendor/lib64/libchilog.so
      36       32       32        0        0       32        0        0        0         0         0         0        0        0    3 /vendor/lib64/libcom.qti.chinodeutils.so
 virtual                     shared   shared  private  private                   Anon      Shmem     File       Shared   Private
    size      RSS      PSS    clean    dirty    clean    dirty     swap  swapPSS HugePages PmdMapped PmdMapped  Hugetlb  Hugetlb   #  object
 6281576   291860   258659    54656     3112    60228   173864   227116   227116         0         0         0        0        0 2118 TOTAL

OP4E5D:/ # cat /proc/1114/smaps | grep ife
769ecc0000-769ecce000 r--s 00000000 fc:13 8068857                        /vendor/lib64/libcamxifestriping.so
OP4E5D:/ # showmap 1114 | grep ife
      56       56       56        0        0       56        0        0        0         0         0         0        0        0    1 /vendor/lib64/libcamxifestriping.so
//通过smaps计算libcamxifestriping.so的占用大小=:0x769ecce000-0x769ecc0000=0xE000=  57344,    57344/1024=56K,和showmap显示的56K一致   

关注文本段标红的部分的内存size地址段。

system\memory\libmeminfo\ showmap就是将smaps的虚拟地址计算出大小。

130|OP4E5D:/ # showmap PID | grep -iE "chi|camx|virtual|size|TOTAL|camera"  #过滤一下,不显示那么多,只显示我们关注的部分,下面红色是显示各种内存字段的大小:

 virtual shared shared private private Anon Shmem File Shared Private

    size RSS PSS clean dirty clean dirty swap swapPSS HugePages PmdMapped PmdMapped Hugetlb Hugetlb # object

     212 212 116 192 0 12 8 0 0 0 0 0 0 0 5 /odm/lib64/libcamxtintlessalgo.so

    5260 2196 2196 0 0 2112 84 2632 2632 0 0 0 0 0 4 /vendor/lib64/hw/com.qti.chi.override.so

      52 52 18 40 0 4 8 0 0 0 0 0 0 0 5 /vendor/lib64/libcamxexternalformatutils.so

    8756 4396 4380 32 0 4364 0 8 8 0 0 0 0 0 4 /vendor/lib64/libcamxfacialfeatures.so

    1364 748 684 128 0 620 0 40 40 0 0 0 0 0 5 /vendor/lib64/libcamxfdalgo.so

    1120 608 560 96 0 512 0 8 8 0 0 0 0 0 5 /vendor/lib64/libcamxfdengine.so

      56 56 56 0 0 56 0 0 0 0 0 0 0 0 1 /vendor/lib64/libcamxifestriping.so

      64 60 60 0 0 56 4 0 0 0 0 0 0 0 4 /vendor/lib64/libcamximageformatutils.so

     164 152 152 0 0 152 0 0 0 0 0 0 0 0 4 /vendor/lib64/libcamxncs.so

      16 0 0 0 0 0 0 4 4 0 0 0 0 0 3 /vendor/lib64/libcamxstatscore.so

      32 0 0 0 0 0 0 8 8 0 0 0 0 0 4 /vendor/lib64/libcamxswispiqmodule.so

      56 56 36 40 0 8 8 0 0 0 0 0 0 0 5 /vendor/lib64/libcamxswprocessalgo.so

      20 20 20 0 0 16 4 0 0 0 0 0 0 0 4 /vendor/lib64/libchilog.so

      36 32 32 0 0 32 0 0 0 0 0 0 0 0 3 /vendor/lib64/libcom.qti.chinodeutils.so

 virtual shared shared private private Anon Shmem File Shared Private

    size RSS PSS clean dirty clean dirty swap swapPSS HugePages PmdMapped PmdMapped Hugetlb Hugetlb # object

 6281576 291860 258659 54656 3112 60228 173864 227116 227116 0 0 0 0 0 2118 TOTAL

OP4E5D:/ # cat /proc/1114/smaps | grep ife

769ecc0000-769ecce000 r--s 00000000 fc:13 8068857 /vendor/lib64/libcamxifestriping.so

OP4E5D:/ # showmap 1114 | grep ife

      56 56 56 0 0 56 0 0 0 0 0 0 0 0 1 /vendor/lib64/libcamxifestriping.so

//通过smaps计算libcamxifestriping.so的占用大小=:0x769ecce000-0x769ecc0000=0xE000= 57344, 57344/1024=56K,和showmap显示的56K一致   

关注我,后续还有更多专题博文分享,谢谢!!! 

相关文章:

  • Java设计模式之抽象工厂模式:从入门到架构级实践
  • 经典频域分析法(Bode图、Nyquist判据) —— 理论、案例与交互式 GUI 实现
  • Java 面试系列:Java 中的运算符和流程控制 + 面试题
  • 先进制造aps专题三十三 开源aps产品,frepple和dream对比分析
  • go --- go run main.go 和 go run .
  • Rollup详解
  • 西湖大学团队开源SaProt等多款蛋白质语言模型,覆盖结构功能预测/跨模态信息搜索/氨基酸序列设计等
  • 【7】C#上位机---Modbus RTU 界面设计与封装
  • linux (CentOS 10)使用传统程序语言(C)进行编译---主,子程序连接:子程序的编译
  • 新球体育比分状态监控
  • 【工具】Redis管理工具推荐
  • Spring Boot + MyBatis + Maven论坛内容管理系统源码
  • 阿里云域名证书自动更新acme.sh
  • 在 Windows 上设置 vm.max_map_count 参数
  • 在ubuntu24上装ubuntu22
  • docker相关命令
  • Vue3实战三、Axios封装结合mock数据、Vite跨域及环境变量配置
  • Linux-CentOS-7—— 配置静态IP地址
  • PyTorch 笔记
  • Next.js + SQLite 项目 Docker 生产环境部署方案
  • 陈龙带你观察上海生物多样性,纪录片《我的城市邻居》明播出
  • 自媒体假扮官方蹭反间谍热度攫取利益,国安机关提醒
  • 重庆城市轨道交通拟听证调价:公布两套票价方案,正征求意见
  • 人民日报和音:相信中国就是相信明天
  • 下辖各区密集“联手”,南京在下一盘什么样的棋?
  • 国家统计局:2024年城镇单位就业人员工资平稳增长