dumpsys meminfo详解 adb shell dumpsys meminfo [pkg/pid] 可以用来查看指定进程包名的内存使用情况 dumpsys meminfo -h 帮助 meminfo dump options: [-a] [-d] [-c] [-s] [--oom] [process] -a: include all available information for each process. -d: include dalvik details. -c: dump in a compact machine-parseable representation. -s: dump only summary of application memory usage. -S: dump also SwapPss. --oom: only show processes organized by oom adj. --local: only collect details locally, don't call process. --package: interpret process arg as package, dumping all processes that have loaded that package. --checkin: dump data for a checkin If [process] is specified it can be the name or pid of a specific process to dump. 名词概念: 虚拟内存:进程空间内的虚拟内存地址,理论上32位cpu一个进程有4GB的虚拟内存可以使用。 物理内存:就是真正写的到内存条上的,真实地址对进程不可见,由操作系统把虚拟内存地址映射到物理内存地址。 Size:指的就是分配了多少虚拟内存 Rss、Pss指的是实际物理内存使用的大小,由于这个内存段是纯new出来的,没有共享库,所以这两个值是一样的。由于只给4MB的数组赋值,操作系统只给分配了4MB的真实物理内存。 Objects是统计App内部组件对象个数,其中Views、ViewRootImpl以及Activities个数,在Activity onDestroy后应该都会回收清零,如果onDestroy调用后这几个对象个数没有清零,就可能发生了内存泄漏。 android程序内存被分为2部分:native和dalvik,dalvik就是java堆,普通java对象是在java堆分配,而bitmap是直接在native上分配,对于内存的限制是 native+dalvik 不能超过最大限制。 名词解释: 名词 说明 补充 Uptime 表示启动到现在的时长,不包含休眠的时间,单位毫秒(ms) Realtime 表示启动到现在的时长,包含休眠的时间,单位毫秒(ms) Native Heap 指c 中malloc出来的堆空间 扩展:c++申请的内存为native process,java申请的内存:java process Dalvik Heap 指java中new出来的java堆空间 只是占用的虚拟内存的空间 Pss Total 指占用了真实的物理内存的空间 private dirty 指私有驻留内存 扩展:进程内存空间是虚拟内存,区分于物理内存,进程无法直接操作物理内存RAM。必要时,操作系统对其进行映射,使进程能应用到物理内存 Heap Size 指占用总内存(Heap 堆) Heap Alloc 指在虚拟地址中分配了这么多空间 Heap Free 空闲内存 注:因为Android系统对dalvik的vm heapsize作了硬性限制,当java进程申请的java空间超过阈值时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定) 查看单个应用最大内存限制,输入命令:getprop|grep heapgrowthlimit 得到结果该机型为192M。dalvik process 超过就会抛OOM异常 Applications Memory Usage (in Kilobytes): Uptime: 246353123 Realtime: 292602983** MEMINFO in pid 8410 [com.doctopia.zeroe] ** Pss Private Private SwapPss Heap Heap Heap Total Dirty Clean Dirty Size Alloc Free ------ ------ ------ ------ ------ ------ ------ Native Heap 52421 52336 24 0 82432 61868 20563 Dalvik Heap 31844 31816 4 0 38652 30460 8192 Dalvik Other 14051 14048 0 12Stack 3640 3640 0 28 Ashmem 80 48 0 0 Gfx dev 12848 12288 560 0Other dev 76 0 76 0 .so mmap 2292 936 252 95.jar mmap 0 0 0 0.apk mmap 1642 76 1064 0.ttf mmap 0 0 0 0.dex mmap 6073 5860 132 4.oat mmap 2153 0 0 0.art mmap 2682 2408 8 82 Other mmap 312 8 184 0 EGL mtrack 432 432 0 0GL mtrack 26160 26160 0 0 Unknown 14579 14576 0 18TOTAL 171524 164632 2304 239 121084 92328 28755 App Summary Pss(KB) ------ Java Heap: 34232 Native Heap: 52336Code: 8320 Stack: 3640Graphics: 39440 Private Other: 28968 System: 4588 TOTAL: 171524 TOTAL SWAP PSS: 239 Objects Views: 821 ViewRootImpl: 2 AppContexts: 6 Activities: 3 Assets: 6 AssetManagers: 3 Local Binders: 62 Proxy Binders: 36 Parcel memory: 24 Parcel count: 98Death Recipients: 2 OpenSSL Sockets: 25WebViews: 1 SQL MEMORY_USED: 279 PAGECACHE_OVERFLOW: 76 MALLOC_SIZE: 62 DATABASES pgsz dbsz Lookaside(b) cache Dbname 4 24 38 1254/33/7 /data/user/0/com.doctopia.zeroe/databases/sensorsdata 4 60 136 141/56/20 /data/user/0/com.doctopia.zeroe/databases/bugly_db_ Asset Allocations zip:/data/app/com.doctopia.zeroe-1/base.apk:/resources.arsc: 972K 其他常用服务信息查询 内存 adb shell dumpsys meminfo CPU adb shell dumpsys cpuinfo 帧率 adb shell dumpsys gfxinfo 显示 adb shell dumpsys display 电源 adb shell dumpsys power 电池状态 adb shell dumpsys batterystats 电池 adb shell dumpsys battery 闹钟 adb shell dumpsys alarm 位置 adb shell dumpsys location |
|