adb shell 命令 dumpsys meminfo pkg 信息注释
参考网址:https://blog.youkuaiyun.com/su749520/article/details/80746972
1. 参考文章
https://www.jianshu.com/p/0df5ad0d2e6a
https://blog.youkuaiyun.com/msf568834002/article/details/78881341
2. adb shell dumpsys meminfo 包名
adb shell dumpsys meminfo com.lava.cleanmaster
Applications Memory Usage (in Kilobytes):
Uptime: 21001939 Realtime: 501978173
** MEMINFO in pid 18213 [com.lava.cleanmaster] **
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 4604 4540 0 0 16384 6316 10067
Dalvik Heap 2444 2364 0 0 6538 4908 1630
Dalvik Other 602 600 0 0
Stack 108 108 0 0
Ashmem 9 0 0 0
Other dev 5 0 4 0
.so mmap 1138 160 0 20
.apk mmap 331 0 0 0
.ttf mmap 22 0 0 0
.dex mmap 5628 72 5556 0
.oat mmap 1421 0 0 0
.art mmap 1162 832 0 0
Other mmap 9 4 0 0
EGL mtrack 196 196 0 0
GL mtrack 9017 9017 0 0
Unknown 881 840 36 0
TOTAL 27597 18733 5596 20 22922 11224 11697
App Summary
Pss(KB)
------
Java Heap: 3196
Native Heap: 4540
Code: 5788
Stack: 108
Graphics: 9213
Private Other: 1484
System: 3268
TOTAL: 27597 TOTAL SWAP PSS: 20
Objects
Views: 25 ViewRootImpl: 1
AppContexts: 5 Activities: 1
Assets: 4 AssetManagers: 2
Local Binders: 11 Proxy Binders: 14
Parcel memory: 3 Parcel count: 13
Death Recipients: 0 OpenSSL Sockets: 0
WebViews: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
3. meminfo 信息横轴
3.1 Pss Total 实际使用内存
将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
3.2 Private Dirty 或 Clean 私有内存
进程销毁时可以回收的内存容量
3.2.1 Private Dirty
通常private Dirty内存是最重要的部分,因为只被自己进程使用。Dirty内存是已经被修改的内存页,因此必须常驻内存(因为没有swap)
3.2.2 Private Clean
Clean内存是已经映射持久文件使用的内存页(例如正在被执行的代码),因此一段时间不使用的话就可以置换出去。
3.3 Heap Alloc
HeapAlloc 是Dalvik堆和本地堆分配使用的大小,它的值比Pss Total和Private Dirty大,因为进程是从Zygote中复制分裂出来的,包含了进程共享的分配部分。
4. meminfo 信息纵轴
4.1 Native Heap native
代码申请的内存, 堆和栈,及静态代码块等。
4.2 Dalvik Heap 虚拟机分配的内存
4.2.1 Pss Total 中的 Dalvik Heap
PSS Total包含所有Zygote分配使用的内存,共享跨进程加权。
4.2.2 PrivateDirty 中的 Dalvik Heap
PrivateDirty 是应用独占内存大小,包含独自分配的部分和应用进程从Zygote复制时被修改的Zygote分配的内存页。
4.3 … mmap
映射本地或虚拟机代码到使用的内存中
.so mmap 1138 160 0 20
.apk mmap 331 0 0 0
.ttf mmap 22 0 0 0
.dex mmap 5628 72 5556 0
.oat mmap 1421 0 0 0
.art mmap 1162 832 0 0
Other mmap 9 4 0 0
4.4 … mtrack
4.4.1 EGL mtrack
获取的是gralloc内存使用情况
4.4.1 GL mtrack
说明需要获取的是驱动程序报告的GL内存使用。它主要是GL纹理大小,GL命令缓冲区,固定的全局驱动程序RAM开销等的总和。
4.5 … Unknown
无法归类的其他项。主要包括大部分的本地分配。
4.5 TOTAL
进程总使用的实际内存。