杭州第一期_基于白盒的性能分析_20180908

APK分析

  • 真机上app需要一个debugable=true才可以进行分析

Profile工具

  • android studio的profile面板
  • DDMS(monitor)

CPU Profile

  • trace开始
  • 业务流程开始
  • 业务流程结束
  • trace结束
  • 分析cpu和real的时间占比排行

Mem Profile

工具

  • monitor
  • android studio

方法

  • 业务流程开始
  • dump heap *.hprof
  • 业务流程结束
  • dump heap *.hprof
  • hprof-conv android.hprof jvm.hprof
  • jvisualVM diff 什么对象出现了大幅增长

高版本的jdk无法运行monitor,需要降级到 1.8.0_120以下

java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

UI Profile

https://developer.android.com/studio/command-line/systrace

Python版本使用2.x,systrace在android的sdk目录下。

python -V
cd $ANDROID_HOME/platform-tools/systrace
./systrace.py -h
./systrace.py -t 5 -o 20180908.html

性能测试的三个境界

  • 不依赖代码的黑盒评估
  • 不依赖代码的白盒剖析
  • 可以线上测试的代码组件

参考文档

作业1

用cpu profile方法去分析雪球的动态tab里的页面滑动,去看下方法耗时,找出来雪球的方法耗时top1的方法。截图回复

作业2

用mem profile去分析从股票列表页到股票详情页再退出到列表页后的内存增长情况。分析出top3增长较大的对象并把diff截图回复