Android研发:刚进公司就把“屎山,Android性能优化常见问题

其实此前我司并不是没有尝试做过性能优化,只不过用的都是市面上比较常见的方案。

对于内存优化:

  1. 我们使用了 LeakCanary来在开发阶段发现内存泄露;

  2. 对于大家提交的代码,我们有一套静态检测机制,来发现一些常见的内存泄露的 case,例如 Cursor 没关闭,io 没关闭等等;

  3. 我们还有一些Code Review 机制,来发现常见的一些内存泄露,例如单例持有了 Activity对象,以及一些内存抖动的 case,比如在 onDraw 里面频繁的创建对象;

相信这些也是大多数同学现在所处项目所实施的方案,那为什么做了这么多,线上的性能问题还是一塌糊涂呢?

因为我们仅仅处理了“明面”上的问题。

为什么这么说呢?

对于内存,想要彻底的了解它,仅依赖一些写代码时的指导建议、以及 LeakCanary 去发现页面相关泄露是不足够的。

例如很多单例对象持有大量内存,例如:一些同学为了做页面打开速度,疯狂做数据缓存;一堆 Bitmap 留在内存中常驻。

想要了解全貌,该怎么做呢?

分析用户运行之后的内存快照。

大多数同学可能会说,我们也有分析内存的,比如我会在 Android Studio 的 Profiler 中对内存情况进行分析,以及我还会利用 MAT 去详细的查看内存。

这种分析确实能发现当时所处机器在特定路径上的内存问题。

但是,线上用户不同:

线上用户机器硬件配置多变,其实最主要的是线上用户的用户行为、操作路径,我们很难完全知道,等到用户 OOM 之后,报上来的堆栈,仅仅是最后申请内存达到阈值的崩溃,实际上根本的原因可能根本不在那最后一次内存申请。

如下图:

错误发生在 b.xf 第五行,导致OOM的原因,到底是此处申请了太大的内存,还是其他地方申请了太多内存导致可用内存不足亦或者程序存在内存抖动问题,导致连续内存不足,我们不得而知。

所以,我们需要线上内存监控。

对于卡顿:

我们也经常收到用户说,app 卡死了,研发对于「卡死」第一反应是不是 ANR 了?

其实用户可能只是说页面不流畅而已。

当然不管是不流畅、还是 ANR,对于客户端同学来说,都是比较难解的问题。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

题外话

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,点击这里免费分享给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

最后如果马化腾把腾讯给你一天,你会来做什么?欢迎评论区讨论。

大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

[外链图片转存中…(img-zuFBUAQH-1711372601634)]

最后如果马化腾把腾讯给你一天,你会来做什么?欢迎评论区讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值