美文网首页
Android性能分析工具介绍

Android性能分析工具介绍

作者: Allenlll | 来源:发表于2019-01-03 16:42 被阅读10次

一、SysTrace

  • 不能显示程序执行的代码信息,发现了问题,也不能定位问题的位置
  • sdk中tools工具包中monitor经常打不开,需要jdk版本的配合,如果打不开可以用命令行的形式来进行分析,systrace路径为android-sdk/platform-tools/systrace/
  • 命令行执行需要使用mac默认版本python2.7
  • 命令例子:
    python systrace.py -t 3 -o ~/mytrace.html -a com.android.test gfx view wm am res sync
  • 通常我们在怀疑引起jank代码地方,添加如下内容:
    Trace.beginSection("MyAdapter.onCreateViewHolder");
    和 Trace.endSection();

二、traceView

  • trace文件的生成有几种方式
    一种是通过AndroideStudioCPU分析器生成
    一种是DDMS生成
    一种是通过代码:android.os.Debug.startMethodTracing(String traceName); android.os.Debug.stopMethodTracing();在sdcard/Android/data/包名目录有生成的文件。这咱方法方便定位问题

三、命令行工具:dumpsys

  • 配合linux的watch命令对比查看memInfo,操作后查看内存分配情况
    watch -n 2 -d 'adb shell dumpsys meminfo [pkgname|pid] -d'
  • 查看gpu绘制性能,后面的-d是表示显示详细信息
    watch -n 2 -d 'adb shell dumpsys gfxinfo [pkgname]'
    还可以查看数据库的性能问题,-d是高亮显示不同。

四、strictMode

  • 开启strictMode,在发生性能问题时打钱log或者应用崩溃来提示开发者,及时修正不合理代码
  • 代码如下:
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectDiskReads()
                .detectDiskWrites()
                .detectNetwork()   // or .detectAll() for all detectable problems
                .penaltyLog()
                .build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                .detectLeakedSqlLiteObjects()
                .detectLeakedClosableObjects()
                .penaltyLog()
                .build());

五、手机中开发者选项

  • 勾选不保留活动,以测试Activity的回收情况,有没有内存泄露的情况
  • 高度GPU过度绘制,显示过度绘制区域,根据颜色区分是否发生了过度绘制
  • GPU呈现模式分析,在屏幕上显示为条形图,根据每一帧的绘制情况,来检查是不是绘制耗时,条形图的颜色可以区分是ondraw,layout布局,还是主线程有耗时操作。

六、微信Matrix

  • 应用瘦身
  • 启动时间分析
    这两个是比较有用的工具,其它可以再研究一下。

七、其它一些命令

  • 查看应用进程名称
    adb shell ps | grep [key word]
  • 查看Activity启动时间,一般是看totalTime
    adb shell am start -W com.sohu.sohuhy.dev/hy.sohu.com.app.login.view.SplashActivity
    adb shell am start -W com.sohu.sohuhy.dev/hy.sohu.com.app.MainActivity
  • 查看Activity启动Log,过滤ActivityManager中的Displayed,在异步方法结束时加上reportFullyDrawnLog信息中将会计算异步的时长。

八、一些经验

  • 加载优化:
    延时加载,在界面完全显示出来后,加载耗时功能,
    异步加载
    懒加载,使用时再加载

相关文章

网友评论

      本文标题:Android性能分析工具介绍

      本文链接:https://www.haomeiwen.com/subject/ozmfrqtx.html