进程内存分布--之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一致
关注我,后续还有更多专题博文分享,谢谢!!!