前言:
由于移动设备的内存、CPU、GPU资源较为有限,在调试Android系统或应用软件的时候,经常要了解内存占用的情况,所以dumpsys是经常用到。
而为了更准确的了解各个时刻的内存状况,可以配合Linux循环语句while do done来达到循环不断的打印出内存的实时占用情况。
方法:
首先,可以如下打印出Android系统中某个进程的内存使用情况:
$ adb shell dumpsys meminfo com.android.launcher
输出了非常详尽的内存使用情况:
Applications Memory Usage (kB):
Uptime: 270233 Realtime: 270228
** MEMINFO in pid 2783 [com.android.launcher] **
Shared Private Heap Heap Heap
Pss Dirty Dirty Size Alloc Free
------ ------ ------ ------ ------ ------
Native 0 0 0 18100 6470 357
Dalvik 23188 5072 23096 31944 21599 10345
Cursor 0 0 0
Ashmem 0 0 0
Other dev 25728 1072 1492
.so mmap 1508 2156 1036
.jar mmap 0 0 0
.apk mmap 377 0 0
.ttf mmap 345 0 0
.dex mmap 1583 0 0
Other mmap 150 16 116
Unknown 5500 424 5496
TOTAL 58379 8740 31236 50044 28069 10702
Objects
Views: 341 ViewRootImpl: 1
AppContexts: 35 Activities: 1
Assets: 5 AssetManagers: 5
Local Binders: 17 Proxy Binders: 35
Death Recipients: 0
OpenSSL Sockets: 0
SQL
MEMORY_USED: 1104
PAGECACHE_OVERFLOW: 1011 MALLOC_SIZE: 62
DATABASES
pgsz dbsz Lookaside(b) cache Dbname
4 968 95 9/24/10 /data/user/0/com.android.launcher/databases/launcher.db
配合Linux shell脚本语句while do done实现循环调用(间隔时间是一秒):
$ while true; do adb shell dumpsys meminfo com.android.launcher; sleep 1; done
间隔时间还可以这样表示:
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时