一、如何启动Monitor
安装Android sdk后,设置好环境变量后,直接在终端输入monitor,即可启动运行。(若要监听某app,需要安装测试版的Debug或release的包)Monitor界面布局如下:
Monitor界面布局
二、设备信息显示区域
1.设备信息
用数据线将手机与电脑连接成功后,此区域会出现手机设备的信息,包括型号(sm_n9002)/设备识别码(b3e2b356)/手机系统版本(5.1.1)/debug状态的设备还可以看到当前运行的进程信息(com.yx or com.yx:push or com.yx:gt)
2.同时连接多个设备
当连接多台手机时,会出现个设备信息,此时,需要监听哪个就选中相应设备即可。
3.分析工具开关
在设备信息的上面一栏有一些分析工具的开关,当选中某个进程信息时,开关才被点亮,点击右侧三角号可以弹出更多开关选项。
Debug Process:调试程序。
Update Heap :更新堆,监听进程的堆分配信息。
Dump HPROF file:导出.hprof文件(可使用MAT的视图工具分析内存)。
Cause GC:同Heap视图中的cause GC按钮,表示请求一次gc操作。
Update Threads :更新线程信息。
Start Method Profiling :开始方法分析(不常用)
Stop Process :强杀某个进程。
Screen Capture:屏幕截图。
Dump View Hierarchy for UI Automator :与Android sdk 文件夹tools下的uiautomatorviewer功能一致。
Capture System Wide Trace :若页面卡顿时,可以使用这个工具,点击后在弹窗中设置要记录的信息,开始操作app,然后会生成trace.html文件可供分析。
三、分析工具区域
1.Thread(线程相关)
utime 和stime代表了线程在瞬间运行用户代码(utime)和系统代码(STIME)所花的总时间,星号表示守护线程。
2.Heap/Allocation Tracker(内存相关)
左侧部分:左上绿色的Heap按钮即为Heap工具的开关,左下选中了com.yx,表示监听的进程是有信,有绿色的Heap表示正在监听Heap信息;
右侧部分:红色框中的数据含义分别为:Heap Size = 占用内存的总大小;Allocated = 已分配使用的内存空间;Free = 剩余空间大小;Used = 使用率。
绿色框中的数据表示不同的对象占用的内存大小,是红色框的的详细内存分配(点击标题栏可以按大小排序)。
黄色款中的数据表示的是已经选中的某个对象的内存详细数据例如上图中的class object。
OOM:使用过程中重点关注Total Size比较大的对象,上图中的class object占用的Total Size最大,若Total Size超过了系统预分配的内存空间,app的进程就会被kill,前端表现就是“有信停止运行”。
Allocation Tracker(分配跟踪器)视图中显示了有关分配的更深层细节。点击“Start Tracking(开始跟踪)”,在应用中执行某个操作,然后点击“Get Allocations(获得分配)”。即可显示出这一操作过程中的内存分配信息。包括:分配顺序(Alloc Order)/分配大小(Allocation Size)/ 被分配的类名(Allocated Class)/被分配的线程ID( Thread id)被分配的位置( Allocated in)
3.Network Statistics(网络流量相关)
4.File Explorer(文件浏览)
5.Emulator Control(控制系统打电话和发短信的工具)
6.System Information(系统信息)
注:此工具下每次选中统计指标(cpu/pss/Frame)后,都要点击按钮[Update from Device]后查看最新数据。
6.1 CPU
6.2 PSS(内存)
6.3 Frame Render Time(帧渲染时间)
上图中有三个参数,Draw /Process /Execute 表示页面渲染的三个不同阶段,一般要求这三步每一步都不超过16ms,用户使用过程中才不会卡顿。
若某个页面出现卡顿,可以通过这个工具来观察数据。
四、log显示区域
Level:log级别,V-Verbose,D-Debug,I-Info,W-Warn,E-Error,A-Assert
Time:log时间,精确到ms。
Application:log对应的进程,例如有信: com.yx;有信个推:com.yx:gt;有信长链接:com.yx:push。
Tag:开发在打log时打上的标签,例如:TcpRequest/YxCalling/HttpRequest/YxCommon。
test:log的具体内容。
注:log区域的不同颜色代表不同级别。Error-红色;Info-绿色;Debug-蓝色,(一般选中info以上的就可满足咱们的需求);
可以根据以上信息根据需要设置Filter。