1.adb shell dumpsys meminfo
Total PSS by process:
161,563K: system (pid 1055)
88,345K: com.android.systemui (pid 1972)
系统中每个应用的PSS占用
2.adb shell dumpsys meminfo com.android.systemui [-d]
** MEMINFO in pid 1972 [com.android.systemui] **
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 28386 28316 0 0 38912 28335 10576
Dalvik Heap 5766 5712 0 0 12070 6035 6035
Dalvik Other 3638 3628 0 0
Stack 60 60 0 0
Ashmem 128 52 0 0
Other dev 8 0 8 0
.so mmap 4104 236 192 0 ...
-d参数是可选参数,表示显示更多关于Dalvik和ART的内存信息
具体到某个进程的内存占用信息
3.adb shell procrank
PID Vss Rss Pss Uss Swap PSwap USwap ZSwap cmdline
1055 4555252K 263404K 139971K 121920K 0K 0K 0K 0K system_server
580 223524K 81164K 71166K 69752K 0K 0K 0K 0K /vendor/bin/hw/camerahalserver
1972 4405872K 196300K 68189K 51040K 0K 0K 0K 0K com.android.systemui
VSS表示Virtual Set Size 虚拟耗用内存(包含共享库占用的内存),表示进程可以访问的地址空间。
RSS表示Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS表示Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS表示Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)内存泄漏分析
需要关注的是。meminfo拿到的信息和procrank拿到的内存数据有差异。
PSS的信息应该保持一致,USS应该与private dirty一致
原因:
4.adb shell cat / proc / meminfo
MemTotal: 888828 kB
MemFree: 32664 kB
MemAvailable: 352568 kB
Buffers: 2116 kB
Cached: 318564 kB
SwapCached: 3432 kB
5.adb shell procmem
这条命令针对某一条进程具体分析
6.heapgrowthlimit:每个虚拟机可用的最大内存
在应用的manifest文件中配置android:largeHeap属性true之后应用的最大可用内存变为heapsize
网友评论