通过adb shell dumpsys meminfo + pid可以得到如下信息:
Applications Memory Usage (in Kilobytes):
Uptime: 30456752 Realtime: 106205372
** MEMINFO in pid 2188 [com.android.systemui] **
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 11875 11148 708 70091 96640 80732 15907
Dalvik Heap 8681 8416 248 340 15441 6225 9216
Dalvik Other 3860 3576 284 69
Stack 36 36 0 20
Ashmem 6 0 0 0
Other dev 14 0 8 0
.so mmap 1184 152 144 353
.jar mmap 0 0 0 1
.apk mmap 1027 0 772 0
.ttf mmap 238 0 184 0
.dex mmap 6397 0 4476 4
.oat mmap 1499 0 228 0
.art mmap 1036 624 164 28
Other mmap 1304 0 608 4
EGL mtrack 6701 6701 0 0
GL mtrack 15773 15773 0 0
Unknown 540 496 44 744
TOTAL 131825 46922 7868 71654 112081 86957 25123
App Summary
Pss(KB)
------
Java Heap: 9204
Native Heap: 11148
Code: 5956
Stack: 36
Graphics: 22474
Private Other: 5972
System: 77035
TOTAL: 131825 TOTAL SWAP PSS: 71654
Objects
Views: 1133 ViewRootImpl: 5
AppContexts: 21 Activities: 1
Assets: 9 AssetManagers: 8
Local Binders: 192 Proxy Binders: 69
Parcel memory: 31 Parcel count: 132
Death Recipients: 2 OpenSSL Sockets: 0
WebViews: 0
SQL
MEMORY_USED: 145
PAGECACHE_OVERFLOW: 9 MALLOC_SIZE: 117
DATABASES
pgsz dbsz Lookaside(b) cache Dbname
4 20 19 0/18/1 /data/user_de/0/com.android.systemui/databases/timezones.db3
Asset Allocations
zip:/system/priv-app/MtkSystemUI/MtkSystemUI.apk:/assets/fonts/hiosClock_regular.ttf: 10K
下面讲一下这里面关于memory信息的数据关系,以下计算公式主要通过代码研究得到:
PSS total= Pss Total列总和 + SwapPss Dirty列总和
即:total=11875+8681+3860+36+6+14+1184+1027+238+6397+1499+1036+1304+6701+15773+540+70097+340+69+20+353+1+4+28+4+744=131825KB
Java heap=Dalvik private dirty+.art mmap private clean+.art mmap private dirty=8461+624+164 =9204
native heap = native private dirty=11148
code = .so private (clean+dirty) + .jar private (clean+dirty) + .apk private (clean+dirty) + .ttf private (clean+ dirty) + .dex private (clean + dirty) + .oat private (clean + dirty)=152+144+772+184+4476+228=5956
stack = stack private dirty = 36
graphics= GL mtrack private (clean + dirty) + EGL mtrack private(clean + dirty)=6701+15773=22474
private other= private clean列+private dirty列-java heap-native heap-code-stack-graphic=46922+7868-9204-11148-5956-36-22474=5972
system=total-private Clean 列总和+private dirty列总和=131825-46922-7868=77035