15

で取得したプロファイルについて詳しく説明できる人はいますadb shell dumpsys meminfo my-app-nameか?

結果は、「Android でアプリケーションのメモリ使用量を検出するにはどうすればよいですか?」で述べたとおりです。:

** MEMINFO in pid 890 [process-name] **
                    native   dalvik    other    total
            size:    10940     7047      N/A    17987
       allocated:     8943     5516      N/A    14459
            free:      336     1531      N/A     1867
           (Pss):     4585     9282    11916    25783
  (shared dirty):     2184     3596      916     6696
    (priv dirty):     4504     5956     7456    17916

 Objects
           Views:      149        ViewRoots:        4
     AppContexts:       13       Activities:        0
          Assets:        4    AssetManagers:        4
   Local Binders:      141    Proxy Binders:      158
Death Recipients:       49
 OpenSSL Sockets:        0

 SQL
            heap:      205          dbFiles:        0
       numPagers:        0   inactivePageKB:        0
    activePageKB:        0

各列 (ネイティブ、dalvik、その他、合計) は何を意味しますか? 特に「その他」の列は何ですか (ネイティブと dalvik 以外に何があるかわかりません)。誰かがこれについて詳しく説明する具体的な例を挙げてくれると素晴らしいでしょう. たとえば、アプリ A があります。A には独自のオブジェクト obj_private と独自のネイティブ ライブラリ lib_private があります。また、A は Android フレームワーク obj_shared のオブジェクトと Android フレームワーク lib_shared のネイティブ ライブラリを参照します。また、obj_shared は、Android lib_shared_indirect のネイティブ ライブラリを参照します。この場合、私はそれらを言うことができますか?

  1. 「合計サイズ」は、「obj_private + lib_private + obj_shared + lib_shared + lib_shared_indirect」によって使用されるすべてのメモリに等しくなります。
  2. 「private dirty」は、「obj_private + lib_private」によって汚れたメモリに等しい

これについて明確にしたい理由は、以前のバージョンと比較して、最新バージョンのアプリの実行時メモリが異常に増加しているためです。そして、dumpsys meminfo を使用すると、「native」と「other」の列が劇的に増加していることがわかりました。しかし、新しいバージョンの変更は Java のみに関連するものであり、「その他」の列についての説明はありません。これをグーグルで検索しましたが、ドキュメントは見つかりませんでした。adbのソースコードも読んでみました。しかし、私のような初心者にとっては、ソース コードで簡単に迷子になることがわかりました。そのため、誰かが助けてくれる場合に備えて、この質問をここに投稿します。

4

1 に答える 1