で取得したプロファイルについて詳しく説明できる人はいます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 のネイティブ ライブラリを参照します。この場合、私はそれらを言うことができますか?
- 「合計サイズ」は、「obj_private + lib_private + obj_shared + lib_shared + lib_shared_indirect」によって使用されるすべてのメモリに等しくなります。
- 「private dirty」は、「obj_private + lib_private」によって汚れたメモリに等しい
これについて明確にしたい理由は、以前のバージョンと比較して、最新バージョンのアプリの実行時メモリが異常に増加しているためです。そして、dumpsys meminfo を使用すると、「native」と「other」の列が劇的に増加していることがわかりました。しかし、新しいバージョンの変更は Java のみに関連するものであり、「その他」の列についての説明はありません。これをグーグルで検索しましたが、ドキュメントは見つかりませんでした。adbのソースコードも読んでみました。しかし、私のような初心者にとっては、ソース コードで簡単に迷子になることがわかりました。そのため、誰かが助けてくれる場合に備えて、この質問をここに投稿します。