天天看点

【内存优化】查看app(进程)的内存占用

1、官方有篇文章,详细的写了,可以通过哪些工具查看内存占用的情况

https://developer.android.com/studio/profile/investigate-ram.html

2、较常用的 adb 命令,adb shell dumpsys meminfo <packageName>

  1. Here is an older dumpsys on Dalvik of the gmail app:  
  2. ** MEMINFO in pid 9953 [com.google.android.gm] **  
  3.                  Pss     Pss  Shared Private  Shared Private    Heap    Heap    Heap  
  4.                Total   Clean   Dirty   Dirty   Clean   Clean    Size   Alloc    Free  
  5.               ------  ------  ------  ------  ------  ------  ------  ------  ------  
  6.   Native Heap      0       0       0       0       0       0    7800    7637(6)  126  
  7.   Dalvik Heap   5110(3)    0    4136    4988(3)    0       0    9168    8958(6)  210  
  8.  Dalvik Other   2850       0    2684    2772       0       0  
  9.         Stack     36       0       8      36       0       0  
  10.        Cursor    136       0       0     136       0       0  
  11.        Ashmem     12       0      28       0       0       0  
  12.     Other dev    380       0      24     376       0       4  
  13.      .so mmap   5443(5) 1996    2584    2664(5) 5788    1996(5)  
  14.     .apk mmap    235      32       0       0    1252      32  
  15.     .ttf mmap     36      12       0       0      88      12  
  16.     .dex mmap   3019(5) 2148       0       0    8936    2148(5)  
  17.    Other mmap    107       0       8       8     324      68  
  18.       Unknown   6994(4)    0     252    6992(4)    0       0  
  19.         TOTAL  24358(1) 4188    9724   17972(2)16388    4260(2)16968   16595     336  
  20.  Objects  
  21.                Views:    426         ViewRootImpl:        3(8)  
  22.          AppContexts:      6(7)        Activities:        2(7)  
  23.               Assets:      2        AssetManagers:        2  
  24.        Local Binders:     64        Proxy Binders:       34  
  25.     Death Recipients:      0  
  26.      OpenSSL Sockets:      1  
  27.  SQL  
  28.          MEMORY_USED:   1739  
  29.   PAGECACHE_OVERFLOW:   1164          MALLOC_SIZE:       62  

看上面的数据可以简单排查出你app中的一些问题,比如看当前Activity数量,如果显示的数量和你预期的数量不一致,可能就已经有activity泄露了,然后你可以用工具 mat 来排查具体是什么原因引起的activity内存泄漏,具体可以看这篇:

《【内存优化】内存泄漏 之 MAT 工具的使用 》