前言:
由于移动设备的内存、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小时