android dumpsys meminfo 详解

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       12 Stack 3640     3640        0       28 Ashmem 80       48        0        0 Gfx dev 12848    12288      560        0 Other 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        0 GL mtrack 26160    26160        0        0 Unknown 14579    14576        0       18 TOTAL 171524   164632     2304      239   121084    92328    28755 App Summary
                   Pss(KB) /------ Java Heap: 34232 Native Heap: 52336 Code: 8320 Stack: 3640 Graphics: 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:       98 Death Recipients: 2      OpenSSL Sockets:       25 WebViews: 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

原文 

https://segmentfault.com/a/1190000022983605

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » android dumpsys meminfo 详解

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址