adbを使用して、デバイス上で実行中のプロセスとスレッドの情報を確認することができます。また、メモリ使用量に関する情報を知ることができます。
次のようなコマンドを使用して必要な情報を得ることができます。
- adb shell ps -ef:実行中のプロセスのリスト出
- adb shell ps -T:実行中のスレッドのリスト出
- adb shell dumpsys meminfo [package name | pid]:実行中のプロセスのメモリ使用量のスナップショット出
それぞれのコマンドの使用方法についての例と一緒に説明します。
psコマンド
adb shellは、Linuxのように ps
コマンドを提供しています。 psコマンドでプロセスとスレッドのリストを出力することができます。
adb shellでpsのhelpメッセージを確認するとどのようなオプションを提供するかは、それぞれのオプションがどのような内容を出力することを知ることができます。
$ adb shell ps --help
usage: ps [-AadefLlnwZ] [-gG GROUP,] [-k FIELD,] [-o FIELD,] [-p PID,] [-t TTY,] [-uU USER,]
List processes.
Which processes to show (-gGuUpPt selections may be comma separated lists):
-A All -a Has terminal not session leader
-d All but session leaders -e Synonym for -A
-g In GROUPs -G In real GROUPs (before sgid)
-p PIDs (--pid) -P Parent PIDs (--ppid)
-s In session IDs -t Attached to selected TTYs
-T Show threads also -u Owned by selected USERs
-U Real USERs (before suid)
Output modifiers:
-k Sort FIELDs (-FIELD to reverse) -M Measure/pad future field widths
-n Show numeric USER and GROUP -w Wide output (don\'t truncate fields)
Which FIELDs to show. (-o HELP for list, default = -o PID,TTY,TIME,CMD)
-f Full listing (-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
-l Long listing (-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
-o Output FIELDs instead of defaults, each with optional :size and =title
-O Add FIELDS to defaults
-Z Include LABEL
実行中のプロセスのリスト出力
次のコマンドは、デバイス上で実行中のすべてのプロセスの情報を出力します。
$ adb shell ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:14:10 ? 00:00:02 init second_stage
root 2 0 0 07:14:10 ? 00:00:00 [kthreadd]
root 4 2 0 07:14:10 ? 00:00:00 [kworker/0:0H]
root 5 2 0 07:14:10 ? 00:00:01 [kworker/u8:0]
root 6 2 0 07:14:10 ? 00:00:00 [mm_percpu_wq]
grepコマンドを一緒に使用すると、必要なpackageまたはプロセスの情報のみを出力することができます。
$ adb shell ps -ef | grep system_server
system 2033 1777 5 07:14:18 ? 00:00:32 system_server
実行中のスレッドのリスト出力
次のコマンドは、デバイス上で実行中のすべてのスレッドの情報を出力します。
$ adb shell ps -T
USER PID TID PPID VSZ RSS WCHAN ADDR S CMD
root 1 1 0 31784 5120 0 0 S init
root 2 2 0 0 0 0 0 S kthreadd
root 4 4 2 0 0 0 0 I kworker/0:0H
もし、特定のプロセスで実行されているスレッドのみを出力するには、次のようにPIDをオプションで入れてくれればされます。
次の例では、pid 2033はsystem_serverのpidです。 pid番号は ps -ef
コマンドを介して知ることができました。
$ adb shell ps -T 2033
USER PID TID PPID VSZ RSS WCHAN ADDR S CMD
system 2033 2033 1777 2111796 193180 0 0 S system_server
system 2033 2039 1777 2111796 193180 0 0 S Jit thread pool
system 2033 2040 1777 2111796 193180 0 0 S Runtime worker
system 2033 2041 1777 2111796 193180 0 0 S Runtime worker
....
実行中のプロセスのメモリ情報の確認
次のように dumpsys meminfo
コマンドを入力すると、実行中のプロセスのおおよそのメモリ使用量のスナップショット情報が出力されます。
$ adb shell dumpsys meminfo
Applications Memory Usage (in Kilobytes):
Uptime: 1474836 Realtime: 1474836
Total PSS by process:
80,647K: system (pid 2033)
80,004K: com.google.android.googlequicksearchbox:search (pid 2813)
78,513K: zygote (pid 1777)
70,264K: com.android.systemui (pid 2173)
58,396K: com.android.chrome (pid 5356)
55,579K: com.google.android.gms (pid 2756)
51,626K: com.google.android.gms.persistent (pid 2579)
47,787K: com.google.android.youtube (pid 3887)
44,664K: com.google.android.apps.nexuslauncher (pid 2439 / activities)
34,097K: com.google.android.apps.messaging (pid 3476)
31,900K: com.google.android.inputmethod.latin (pid 2485)
30,176K: com.google.android.apps.messaging:rcs (pid 5233)
....
特定のプロセスのメモリ情報の確認
特定のプロセスのメモリ情報のみを表示したい場合は、次のようにpidまたはpackage nameをコマンドの引数として渡します。
- adb shell dumpsys meminfo [pid]
- adb shell dumpsys meminfo [package name]
「adb shell dumpsys meminfo [package_name|pid] -d」のように「-d」オプションを追加すると、DalvikとArtメモリの使用量に関する詳細情報が出力されます。
以下は、pid 2033(system_server)のメモリ情報を出力する例です。
$ adb shell dumpsys meminfo 2033
Applications Memory Usage (in Kilobytes):
Uptime: 1080927 Realtime: 1080927
** MEMINFO in pid 2033 [system] **
Pss Private Private Swap Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 21249 21184 0 0 27612 23433 4178
Dalvik Heap 17323 17272 0 0 17135 10991 6144
Dalvik Other 1976 1976 0 0
Stack 36 36 0 0
...
次は、com.google.android.youtubeのメモリ情報を出力する例です。
$ adb shell dumpsys meminfo com.google.android.youtube
Applications Memory Usage (in Kilobytes):
Uptime: 3699899 Realtime: 3699899
** MEMINFO in pid 6789 [com.google.android.youtube] **
Pss Private Private Swap Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 36159 36096 0 0 48536 46675 1860
Dalvik Heap 9405 9340 0 0 13414 7286 6128
Dalvik Other 6272 6272 0 0
Stack 56 56 0 0
出力される内容が何を意味するのか詳しく知りたい場合は、Android devloperを参照してくださいお勧めします。
Related Posts
- Android - FusedLocationProviderClientに位置情報を取得する
- Android - GPS、Network位置情報を取得する(LocationManager)
- Android - adbコマンドでActivity実行
- アンドロイド - MediaStoreにメディアファイルを保存する方法
- Android - Runtime permissionリクエスト方法と例(kotlin)
- Android11 - Storage(ストレージ)の変更まとめ
- Jetpack Compose - RowとColumn
- Android 13 - 細かいメディアファイルの権限
- Android 13でNotification権限をリクエスト、通知を表示する
- エラー解決:android gradle plugin requires java 11 to run. you are currently using java 1.8.
- Query method parameters should either be a type that can be converted into a database column or a List
- Android - TabLayoutの実装方法(+ ViewPager2)
- Android - adbコマンドで特定のパッケージのプロセスの終了
- Android - adb push、pullでファイルのコピー、ダウンロード
- Android - adbコマンドでsettings value確認、変更、
- Android 12 - IntentFilterのexported明示的な宣言
- Android - adb logcatコマンドでログ出力
- Android - ACTION_BOOT_COMPLETEDイベント受信
- Android - Foreground Service実行
- Android - ファイル入出力の例(Read、Write、内部、外部ストレージ)
- Android - アプリの権限を確認(Permission check)
- Android - adbで実行中のプロセス、スレッドリスト及びメモリ情報の確認
- Android - Broadcast Receiver登録およびイベントの受信方法
- Android - Cleartext HTTP ... not permitted例外解決方法
- Androidのビルドエラー - Calls to Java default methods are prohibited in JVM target 1.6
- アンドロイド - Assetsでファイルを読み取る方法
- アンドロイドのさまざまなNotification種類と実装方法
- アンドロイド - INSTALL_FAILED_TEST_ONLYエラー解決方法
- Android EspressoのCustom Matcher実装方法
- Android Espressoを使用してUIをテストする方法(3)
- アンドロイド - CTS hostsideをgradleで構築する方法
- Androidのアプリのデータフォルダーのパスと内部/外部ストレージ説明
- アンドロイド - 最初のApp作成
- Androidをインストールする方法(Windows)