作者:他乡绿树_762 | 来源:互联网 | 2023-05-17 15:54
使用SIGQUIT获取GC性能信息的步骤-使用SIGQUIT获取GC性能信息的步骤简要说明获取应用包名的方法通过adbshell获取应用包名以及Activity通过解
使用 SIGQUIT 获取 GC 性能信息的步骤
- 简要说明
- 获取应用包名的方法
-
- 通过adb shell获取应用包名以及Activity
- 通过解析apk信息获取应用包名
- 获取该APP 的PID
- 使用 SIGQUIT 获取 GC 性能信息
简要说明
可以使用GC 时序转储和 Systrace去衡量GC性能,在这篇博文中就先讲使用时序转储。对于时序转储的本质就将 SIGQUIT 发送给正在运行的应用,并造成一次ANR事件,此时会转储与其锁定、线程堆栈和 GC 性能相关的信息。
对于使用GC时序转储,需要做一下前期工作,比如获取应用包名并使用报名定位到应用运行的进程号。
官网上给出的步骤略为简单,以下教程详细地给出获取GC性能信息的步骤,特别注意一定要定位出输出GC转储文件的名称,不然会报出找不到文件的错误,必须在adb root权限下进行GC转储文件的获取,不然会permission deny
获取应用包名的方法
获取应用包名的方法有如下几种,其中一些方法也可获得App相应Activity的信息,这里做出了总结,任选其一即可
通过adb shell获取应用包名以及Activity
- adb shell am monitor
在命令行里输入如下命令,然后启动要测试的应用,此时便会输出正在运行的应用的包名
adb shell am monitor
- adb shell pm list package
adb shell pm list package
- adb shell dumpsys window w | grep / | grep name=
adb shell dumpsys window w | grep \/ | grep name=
通过解析apk信息获取应用包名
- aapt dump badging /路径/com.taobao.taobao.apk | grep package
使用aapt解析apk并查找包名
aapt dump badging /home/Downloads/com.taobao.taobao.apk | grep launchable-activity
获取该APP 的PID
adb shell pidof yourapp.packagename
使用 SIGQUIT 获取 GC 性能信息
- 进入adb root 权限
adb root
- 输入以下命令以获得 GC 时序转储,注意官网教程这里写的是大写S,但是正确命令是小写s
adb shell kill -s QUIT PID
- 这时会在手机内核 /data/anr/ 中创建一个文件,可使用以下命令查看创建的文件名称
adb shell
cd /data/anr/
ls -a
- 输入以下命令pull出已在运行的应用的 GC 时序转储
adb pull /data/anr/trace_xx.txt
- 如果不确定是哪个文件,也可将/data/anr/全部pull出,再对照创建时间去确认(这是一个笨办法哈哈哈哈)
adb pull /data/anr/
参考链接
source.android.com/devices/tec…