[Android] Средства для анализа использования памяти

adb shell cat /proc/meminfo — покажет общую информацию по использованию памяти в системе. Наиболее важная и интересная информация содержится только в первых строчках вывода:

MemTotal: 419932 kB
MemFree: 11788 kB
Buffers: 3436 kB
Cached: 82272 kB
SwapCached: 14384 kB
...

MemTotal — это общий объем памяти, доступный для ядра и пользовательского пространства (зачастую меньше, чем фактический объем памяти устройства, так как некоторые количество памяти резервируется для радио, DMA буферов и т.д.).

MemFree — объем оперативной памяти, который не используется вообще.

Кеш оперативной памяти используется для кеша файловой системы и других подобных вещей. По-хорошему, системный кеш должнен иметь хотя бы 20 МБ (или около того) для того, чтобы избегать ситуации попадания в состояние подкачки.

adb shell dumpsys meminfo — также покажет информацию об используемой памяти в системе, но в более подробном виде (к примеру, по каждому запущенному Java-процессу):

C:\Users\ADmi>adb shell dumpsys meminfo
Applications Memory Usage (kB):
Uptime: 841043 Realtime: 841036

Total PSS by process:
    79059 kB: android.process.acore (pid 932)
    58356 kB: com.xxx (pid 6409)
    36592 kB: com.htc.launcher (pid 1062)
    36358 kB: system (pid 442)
    ...

Total PSS by OOM adjustment:
    36358 kB: System
               36358 kB: system (pid 442)
    58783 kB: Persistent
               27112 kB: com.android.systemui (pid 579)
               14913 kB: com.android.htcdialer (pid 729)
               11219 kB: com.android.phone (pid 715)
                5539 kB: com.android.nfc (pid 746)
    58356 kB: Foreground
               58356 kB: com.xxx (pid 6409)
    47710 kB: Visible
               ...

Total PSS by category:
   217584 kB: Dalvik
   148600 kB: Unknown
    50546 kB: .so mmap
    38764 kB: .apk mmap
    28005 kB: Other mmap
    13165 kB: .dex mmap
     1928 kB: Other dev
     1881 kB: Native
      696 kB: .ttf mmap
       40 kB: Cursor
       12 kB: Ashmem
       11 kB: .jar mmap

Total PSS: 501232 kB
      KSM: 0 kB saved from shared 0 kB
           0 kB unshared; 0 kB volatile

Зная PID или имя процесса можно вывести подробный отчет по нему:

adb shell dumpsys com.xxx — покажет:

C:\Users\ADmi>adb shell dumpsys meminfo com.xxx
Applications Memory Usage (kB):
Uptime: 939680 Realtime: 939674

** MEMINFO in pid 6409 [com.xxx] **
                             Shared  Private     Heap     Heap
                       Pss    Dirty    Dirty     Size    Alloc
                    ------   ------   ------   ------   ------
           Native       72      168       68    16516    16209
           Dalvik    48471     6512    48284    56867    47084
           Cursor        0        0        0
           Ashmem        2        4        0
        Other dev      268       52      264
         .so mmap     3087     6612     2508
        .jar mmap        0        0        0
        .apk mmap      149        0        0
        .ttf mmap      622        0        0
        .dex mmap      728        0        0
       Other mmap      956      636       92
          Unknown     3980     4328     3868
            TOTAL    58335    18312    55084    73383    63293

 Objects
           Views:      276     ViewRootImpl:        2
     AppContexts:        3       Activities:        2
          Assets:        4    AssetManagers:        4
   Local Binders:       13    Proxy Binders:       21
Death Recipients:        1
 OpenSSL Sockets:        1

 SQL
     MEMORY_USED:      112
PAGECACHE_OVERFLOW:       28      MALLOC_SIZE:       62

 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4       20             57       29/34/10  /data/data/com.xxx/databases/google_analytics_
v2.db
Uptime: 939889 Realtime now=939883