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

image.png

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

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

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

image.png
image.png
image.png
image.png
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视图.,具体点进文章链接。
image.png
ddms中如图
image.png

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

image.png

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


image.png

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 。


给个赞鼓励一下吧~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容