DMMS是as分析问题利器,尤其是棘手的性能问题、内存分析、thread等相关问题
1.Start Method Profiling :点击start->操作->stop,得到如下文件
常用字段的属性说明如下:
列名 描述
Name 该线程运行过程中所调用的函数名
Incle Cpu Time 某函数占用的CPU时间,包含内部调用其他函数的CPU时间
Excl Cpu Time 某函数占用的CPU时间,但不含内部调用其他函数所占用的CPU时间
Incl Real Time 某函数运行的真实时间,含调用其他函数所占用的真实时间
Excl Real Time 某函数运行的真实时间,不含调用其他函数所占用的真实时间
Call +Recur Calls/Total 某函数被调用次数以及递归调用占总调用次数的百分比
Cpu Time/Call 某函数调用CPU时间与调用次数的比,相当于该函数平均执行时间
Real Time/Call 某函数调用CPU的真实时间;
分析方法:找到耗费cpu或实际运行时间长的函数,查看parent和child,一般真正耗时的函数在child,找出你code中耗时的函数,优化它。over
2.Heap 点击Heap->点击Cause GC 得到如下图表
各个属性意思很清晰,主要看Total Size,如果你手动gc多次后,total size有明显的升高趋势,说明此处出现内存泄露
3.Thread 查看当前各个线程状态
4.Dump VH UI Automator 不用多说,看view
5.Dump HPROF 可以直接拖进as看,也可以用其他工具
Shallow Size是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的Shallow Size由其成员变量的数量和类型来定,数组的ShallowSize由数组类型和数组长度来决定,它为数组元素大小的总和。
Retained Size是对象本身,加上可直接或间接引用到的对象的大小,其中要减去被GC Roots存在另外一条路径引用的对象。所以这也可以理解为GC之后所能回收到内存的总和。
6.System Trace 抓trace 使用chrome://tracing/打开,分析耗时点