ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全

ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全

ADB

通过连接电脑和手机进行调试的debug工具,类似一个桥brige。所以全称为android debug bridge。

官网链接 命令非常全!!!

常用用法:

1.mac上安装adb :

打开终端
输入命令:

$ brew cask install android-platform-tools

输入安装密码
等待安装完成

2.列举当前连接设备:

$ adb devices

3.打印logcat信息

$ adb logcat

4.有的时候程序发生了crash,但是androidstudio上没有error信息,此时我们可以用adb去查看:

$ adb logcat | grep AndroidRuntime

5.安装与卸载apk

$ adb install ~/Downloads/mobileqq_android.apk
$ adb uninstall xxx

6.查看当前avtivity

$ adb shell dumpsys activity | grep “mFocusedActivity”

7.其他的查看官网说明官网链接

Android Monitor

详解看我之前写的这篇文章:Android性能分析工具–Android Monitor

Android Device Monitor :DDMS、HierarchyViewer

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

DDMS –Dalvik Debug Monitor Server,这个工具提供了一个集成调试环境,使用起来更加方便。

  • Heap Viewer
    • 实时查看App分配的内存大小和空闲内存大小
    • 发现Memory Leaks(内存泄漏)

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

按上图的标记顺序按下,我们就能看到内存的具体数据,右边面板中数值会在每次GC时发生改变,包括App自动触发或者你来手动触发。

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png
《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png
《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png
《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png
《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

横坐标是对象的内存大小,这些值随着不同对象是不同的,纵坐标是在某个内存大小上的对象的数量

对于内存泄漏,主要是指该释放的内存(没有gc引用)没有被释放掉,我们使用这个工具主要可以手动触发gc,那么如何检测是否内存泄漏呢?Heap Viewer中的数值会自动在每次发生GC时会自动更新,那么我们是等着他自己GC么?既然我们是来看内存泄漏,那么我们在需要检测内存泄漏的用例执行过后,手动GC下,然后观察data object一栏的total size(也可以观察Heap Size/Allocated内存的情况),看看内存是不是会回到一个稳定值,多次操作后,只要内存是稳定在某个值,那么说明没有内存溢出的,如果发现内存在每次GC后,都在增长,不管是慢增长还是快速增长,都说明有内存泄漏的可能性。

  • Allocation Tracker

官网链接:https://developer.android.com/studio/profile/am-allocation.html
Allocation Tracker用来跟踪内存分配,它允许你在执行某些操作的同时监视在何处分配对象,了解这>######些分配使你能够调整与这些操作相关的方法调用,以优化应用程序性能和内存使用。
AS和DDMS中都有Allocation Tracker,androidstudio中的在Android性能分析工具–Android Monitor文章中内存检测 memory部分所讲述的第四个按钮,(Start Allocaton Tracking)开始分配追踪,第一次点击可以指定追踪内存的开始位置,第二次点击可以结束追踪的位置。这样我们截取了一段要分析的内存,等待几秒钟AndroidStudio会给我们打开一个Allocation视图.,具体点进文章链接。

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

ddms中如图

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

HierarchyViewer:ddms中的另一个好用的工具,层级查看器,使用非常简单,连接手机,到你想知道布局的页面,点击如图所示按钮,

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

接着会出现如图所示,会展示所有的布局。你可以看任何app的布局。

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

《ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全》 image.png

MAT:Memory Analyzer Tool 内存快照分析工具

使用MAT进行内存调试,要调试内存,首先需要获取HPROF文件,HPROF文件是MAT能识别的文件,HPROF文件存储的是特定时间点,java进程的内存快照。有不同的格式来存储这些数据,总的来说包含了快照被触发时java对象和类在heap中的情况。由于快照只是一瞬间的事情,所以heap dump中无法包含一个对象在何时、何地(哪个方法中)被分配这样的信息。
Android性能分析工具–Android Monitor还是androidstudio 中android monitor memory内存检测的这个工具的第三个按钮(Dump Heap java),点击这个按钮的时刻,就在点击的时刻,将获取hprof文件(hprof文件也是我们使用MAT工具分析内存时经常使用的文件)若进行简单的数据分析用这个就可以,需要详细分析那么就得使用MAT工具.所以现在我们到了详细使用的mat工具,个人平时使用android studio自带的就可以,如果需要使用,可以自己查阅资料,本文主要是对这些工具有一个简单的了解,介绍。http://www.jianshu.com/p/d8e247b1e7b2参考链接

SDK自带的内存分析工具

TraceView能让我知道个个函数调用的CPU耗时,以及总CPU耗时等,方便排查优化。Systrace能够让我了解各个AP子模块的使用情况,同样利于瓶颈排查,性能优化工作等

SysTrace

Systrace允许你监视和跟踪Android系统的行为(trace)。它会告诉你系统都在哪些工作上花费时间、CPU周期都用在哪里,甚至你可以看到每个线程、进程在指定时间内都在干嘛。它同时还会突出观测到的问题,从垃圾回收到渲染内容都可能是问题对象,甚至提供给你建议的解决方案。
Systrace分为三个部分:
1.内核部分:Systrace以Linux Kernel的ftrace为基础。
2.数据采集:Android定义的Trace类,提供了把信息输出到ftrace的功能。同时,Android还有一个atrace程序,它可以从ftrace中读取统计信息然后交给数据分析工具来处理。
3.数据生成:SDK提供了systrace.py用来收集ftrace统计数据并生成一个结果网页文件供用户查看。
通过命令行启动:

$ cd android-sdk/platform-tools/systrace
$ python systrace.py –time=10 -o mynewtrace.html sched gfx view wm

TraceView

TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot。TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。二者的用法如下:
开发者在一些关键代码段开始前调用 Android SDK 中 Debug 类的 startMethodTracing 函数,并在关键代码段结束前调用 stopMethodTracing 函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是 Java 线程)的函数执行情况,并将采集数据保存到 /mnt/sdcard/ 下的一个文件中。开发者然后需要利用 SDK 中的 TraceView 工具来分析这些数据。
这个工具的使用其实就是我们文章前面说的Allocation Tracker的使用,按钮 Start Method Profiling(开启方法分析)和点击
Stop Method Profiling(停止方法分析)后生成的xx.trace文件分析页面即为TraceView 。

给个赞鼓励一下吧~

    原文作者:芒果味的你呀
    原文地址: https://www.jianshu.com/p/c83f3669e529
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞