本文共 3948 字,大约阅读时间需要 13 分钟。
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
将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
进程销毁时可以回收的内存容量
通常private Dirty内存是最重要的部分,因为只被自己进程使用。Dirty内存是已经被修改的内存页,因此必须常驻内存(因为没有swap)
Clean内存是已经映射持久文件使用的内存页(例如正在被执行的代码),因此一段时间不使用的话就可以置换出去。
HeapAlloc 是Dalvik堆和本地堆分配使用的大小,它的值比Pss Total和Private Dirty大,因为进程是从Zygote中复制分裂出来的,包含了进程共享的分配部分。
代码申请的内存, 堆和栈,及静态代码块等。
PSS Total包含所有Zygote分配使用的内存,共享跨进程加权。
PrivateDirty 是应用独占内存大小,包含独自分配的部分和应用进程从Zygote复制时被修改的Zygote分配的内存页。
映射本地或虚拟机代码到使用的内存中
.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
获取的是gralloc内存使用情况
说明需要获取的是驱动程序报告的GL内存使用。它主要是GL纹理大小,GL命令缓冲区,固定的全局驱动程序RAM开销等的总和。
无法归类的其他项。主要包括大部分的本地分配。
进程总使用的实际内存。
转载地址:http://ogcti.baihongyu.com/