うさがにっき

読書感想文とプログラムのこと書いてきます

コマンドラインからAndroidのメモリ状態を計測する

概要

adbを使ってandroidのメモリ状況を調べる

詳細

adbで、「dumpsys meminfo」コマンドを使うと端末にインストールされたアプリのメモリ状況を確認できる

$ adb shell dumpsys meminfo jp.test
Applications Memory Usage (kB):
Uptime: 4276601 Realtime: 10161762

** MEMINFO in pid 7121 [jp.test] **
                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap        0        0        0        0     9936     5237      238
  Dalvik Heap    28072    27796        0        0    34664    20255    14409
 Dalvik Other     3035     2928        0        0                           
        Stack       20       20        0        0                           
       Ashmem        6        0        0        0                           
    Other dev      192      188        4        0                           
     .so mmap     2293     1708       12        0                           
    .apk mmap      252        0        0        0                           
    .ttf mmap      444        0      244        0                           
    .dex mmap     2997       12     2376        0                           
   Other mmap       26        8        0        0                           
      Unknown     4232     4228        0        0                           
        TOTAL    41569    36888     2636        0    44600    25492    14647
 
 Objects
               Views:      325         ViewRootImpl:        1
         AppContexts:        4           Activities:        2
              Assets:        2        AssetManagers:        2
       Local Binders:       12        Proxy Binders:       22
    Death Recipients:        2
     OpenSSL Sockets:        0
 
 SQL
         MEMORY_USED:       95
  PAGECACHE_OVERFLOW:       16          MALLOC_SIZE:       62
 
 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4       24             32        11/20/6  /data/data/jp.test/databases/test.db
 
 Asset Allocations
    zip:/data/app/jp.test-2.apk:/resources.arsc: 389K
Pss Total アプリのRAM使用量
Private Dirty ザイゴート(zygote)に割り振られ、クラスオブジェクトなどに使用される
Private Clean アプリケーションに使用される
Swapped Dirty ?
Heap Size 使用できるヒープサイズ
Heap Alloc 確保しているヒープサイズ
Heap Free 残りヒープサイズ

Zygoteとは、アプリごとにfolkされているDalvic VMの元のプロセス

メモリリークが発生指定いる場合、NativeかDalvicのHeap Allocが増え続ける

参考

Android Linux のメモリ管理について a Gaffe is a Gaffe
KMC Staff Blog:AndroidでのJavaプログラムの起動やZygoteまわりのメモ

良いAndroidアプリを作る139の鉄則

良いAndroidアプリを作る139の鉄則