zkwlx / ADI

ADI(Android Debug Intensive) 是通过 JVMTI 实现的 Android 应用开发调试的增强工具集,目前主要提供性能相关的监控能力。
Apache License 2.0
307 stars 42 forks source link
android apm bokeh contend gc jni jvmti monitor python thread

ADI 简介

(For english )

对象分配与释放的样例

对象分配图表 点击体验

多线程竞争样例

线程竞争图表 点击体验

APP 集成样例截图

ADI 控制窗

ADI(Android Debug Intensive) 是通过 JVMTI 实现的 Android 应用开发调试的增强工具集,目前主要提供性能相关的监控能力。
ADI 对运行时的 App 进行性能数据收集,并提供工具用于生成分析图表。目前提供如下功能:

控制窗图解

解析 Log 文件并生成图表

采集的内容存放在 Context.getExternalCacheDir()/ADI 目录下,例如

/sdcard/Android/data/APP 包名/cache/ADI/adi_1570605092.log

取出 log 文件后,需要用adi-analyzer工具分析 log 并生成图表,通过 pip3 安装:

pip3 install adi-analyzer

之后运行 adi-analyzer 并将 log 文件传入:

adi-analyzer ~/adi_1570605092.log

adi-analyzer 会创建 .html 结尾的图表文件,之后会自动启动浏览器打开图表文件,图表效果请参考封面。

功能详解

对象分配监控

在监控对象分配时,ADI 会监控所有 Java 层对象的创建事件,有几点需要注意:

ADI 会为对象事件的 Log 生成两个图表:对象分配数量图表和对象分配大小图表。下面用对象分配数量图表介绍下图表的使用方式。

图表图解

点击体验

多线程竞争监控

在监控多线程竞争时,ADI 会监控所有 Java 层 synchronized 关键字导致的多线程锁竞争事件,以下几点需要注意:

多线程竞争图表的 Y 轴是发生竞争的线程名字,X 轴是时间,具体说明请看图解。

图表图解

点击体验


欢迎关注我的公众号 二叉树根子,在这里可以看到不曾见过的 Android 底层技术。

公众号

License

Copyright 2019 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.