性能优化
文章平均质量分 75
望闻听切+远程坐诊,解决让你头疼的Android 性能/稳定性顽疾
杰洛特
世上本无代码,写的多了,自然就有了
展开
-
开篇
目前市面上关于Android 性能优化的文章实在多到数不胜数,但整体质量欠佳,要么太过片面,要么故弄玄虚,基本都是简单雷同的拼凑,并没有形成整体且系统的优化思路,那有没有一篇覆盖全面,简单易懂,适合大多数初中级开发/测试人员看的性能优化文章呢?答案是有的,就是本文(系列)。在进入具体的内容之前,别急,先让我们捋一捋何谓性能优化以及如何下手(切入点)。性能优化有两个侧重点,一个是以提高为主,就像考试把分数从70分提高到90分,本来也能用,即使不提高也没关系,但提高了以后更有竞争力。比如缩短启动/页面打开时原创 2021-05-06 14:10:57 · 83 阅读 · 0 评论 -
线下场景-UI(systrace + perfetto)
线下场景我们能直接连接设备debug,所以监控纬度很多,我们从4个方面入手(就像是中医的望闻听切)来介绍相关监控工具的使用。(如果你已经很熟悉的话,可以直接跳过)1.UI2.CPU3.内存4.整体在下面的章节会逐一介绍,本节先介绍UI。本节我们主要介绍可以用来分析UI的工具 systrace和Perfetto。这两个工具都是Android系统提供的系统追踪工具,可追踪/监控应用各个方面的数据,包括CPU、内存、view、IO等,其中Perfetto是Android 10(API 29)推出的,原创 2021-05-06 14:26:36 · 1668 阅读 · 0 评论 -
线下场景-CPU(TraceView + AS profiler)
TraceView是Android SDK中提供的工具,可以看到线程及方法执行时间、调用次数等。目前Traceview已弃用,官方推荐使用Android profiler中的CPU性能剖析器,但有些老版本(如Android 4.4)并不支持profiler,所以这两个我们都来了解下。一.TraceView1.打开android sdk/tools/monitor.bat文件。2.选中要分析的进程点击红框处的按钮开始即可,再点击一下结束记录。结果页面如下:很直观,基本就是把应用里所有的线程及方原创 2021-05-06 14:32:51 · 914 阅读 · 0 评论 -
线下场景-内存(Android profiler + MAT + adb)
如果说前两节对应用性能优化幅度有限的话,那么本篇内存则直接关系到应用的生死存亡。好的优化可以让死亡边缘的应用起死回生,避免内存泄漏及OOM。内存泄漏一般是长生命周期的对象持有短生命周期对象的引用,当短生命周期完成使命要被资源回收时,GC Root发现对象可达,所以并不回收,如果这样的情况发生很多,就容易造成内存浪费,严重时导致OOM。形象的说就好比,在餐厅吃饭,顾客点了一餐,实际上吃完了饭,但是手还端着碗没放开(持有碗的引用,占用内存), 服务员(GC)看到后认为其没吃完饭,所以本将收回碗筷结果就不收了原创 2021-05-06 14:44:31 · 488 阅读 · 1 评论 -
线下场景-整体(PerfDog)
有人说了,之前介绍的那些方法监控都是瞬时的,而且有的需要人值守,页面也不够友好,有没有无人值守并且可以长时间监控的呢?本节就给大家介绍下来自腾讯的PerfDog(性能狗)。PerfDog独立于应用支持多个维度的监测,包括FPS、CPU、内存、网络等。最重要的是监控的结果可保存到本地也可以上传到服务器中。好用、免费,门槛也低。这个工具可以做为应用整体性能的一个考量,测试人员也可将其纳入到测试用例中。官网:https://perfdog.qq.com/我们借助这个工具达到两个目的:(1).监测应用长时原创 2021-05-06 14:53:29 · 286 阅读 · 0 评论 -
线上场景
前面几节我们主要介绍了线下场景的监控,线下场景不管是 android studio 还是 MAT 或者 adb命令都可以直接使用,但线上场景就不行了,一是不能直接连接,二是设备数量众多,不可能每台都看,所以我们采用两步走的”远程坐诊”方式来解决这个问题。(因为UI和CPU基本在线下场景就能解决,故本节我们主要针对内存监控进行介绍)。可分为两步第一步,通过代码将设备的基本信息记录到日志中,如果低于预期可以报警第二步,针对报警的设备dump出详细内存信息供下载查看第一步内存:ActivityMana原创 2021-05-06 14:59:19 · 236 阅读 · 0 评论 -
结语
1.监控只是保底手段,根本还在于代码的规范合理2.没有万能的工具,通常是多个工具互相组合去发现问题(系统工具 + 命令 + 代码等多维度)3.性能指标的量化,记录和比对很重要4.适合自己的才是最好的,如果本身应用比较简单,那么就没必要大费干戈,本末倒置,当然,追求技术的极致是没错的。5.多看大厂或者官方的技术文章,即使只能看懂一小部分,你会发现整个视野提高了很多。6.经过这一系列的介绍,我们发现优化相关的点稍微一深入就会涉及到linux,操作系统,C++等相关知识,所以这几个也是我们提高优化功力的原创 2021-05-06 15:03:10 · 167 阅读 · 0 评论