dotTrace分析两种方式:性能和时间线。
1.分析器选项
(1)抽样
最快的方式。准确评估出调用时间,但不获取调用数。这种分析方式可以快速获取应用的总体性能。
(2)跟踪
比抽样慢,因此不能准确评估出调用时间,但可以准确获取方法的调用次数。当抽样数据不满足需求时,使用这个方法,例如,评估算法的复杂度
(3)单步
最慢的方式-评估每行代码。单行分析只有在知道导致问题的函数并想单行分析它时有用。
(4)时间线
时间线分析。
由此可见,如果仅仅需要评估应用的总体性能,应该选择抽样方法。
2.时间线分析
(1)找出高CPU占用
(2)找出最慢的方法并查看它的所有调用树
(3)快速理解方法内部发生了什么
从版本2017.1开始,时间线视图提供超有用的子系统特征。子系统的目的是快速回答“我的app再做什么鬼”的问题,也有更详细的问题比如:是什么引起的性能下降或为什么消耗这么多内存?
性能下降是否和文件操作,JIT,字符串处理有关?或者仅仅是一些过度的工作有关?
(4)查看方法的父类调用
(5)通过方法名称找到方法
(6)找到UI冻结的原因
(7)找到内存占用过大的原因
(8)追踪http请求
demo1:分析引起UI冻结的原因
demo2:优化App性能和内存问题(应用占用不再使用的内存)
垃圾回收机制有代价。首先,垃圾回收需要占用一些CPU时间。例如,它的一个阶段是检测无用对象,一个涉及建立对象引用图的复杂操作。其次,为了执行Gen0和Gen1,垃圾回收器必须获取专有权限访问运行堆的一部分。这样,反过来,挂起所有的运行线程除了触发垃圾回收的那个。由于用户接口线程也被挂起,用户在这些时刻可能体验到UI冻结。
这是为什么你需要优化应用来减少内存过载并最小化GC对应用响应的影响。
参考文献:dotTrace官方文档