大意了,又是 OOM ,Android 内存监控一定要注意这几点

针对这个问题,我们需要在上线前进行检测同时也要能够实现线上的监控。

方案一:线下性能监控

==========

Android Studio自身提供的MAT等工具分析内存泄漏比较耗时,因而诞生了LeakCanary——这也是现在寻找内存泄漏问题最常用的工具。

LeakCanary 这个工具非常简单,依赖 LeakCanary 库,可自动检测内存泄漏并通过通知报警,不用初始化。但是经过对它的深入分析之后,不难发现,简单的API后面藏着许多复杂的逻辑处理原理。

面试的时候,面试官也不会问“使用”相关的没有技术含量的东西,一般只会问原理,比如:

  • 1.说一下LeakCanary检测内存泄漏的原理与基本流程

  • 2.LeakCanary是如何初始化的?

  • 3.说一下LeakCanary是如何查找内存泄露的?

下面简单说一下 LeakCanary 的原理(面试必问的,建议收藏):


  • 1.监听 Activity 的生命周期;

  • 2.在 onDestroy 的时候,创建相应的 Refrence 和 RefrenceQueue,并启动后台进程去检测;

  • 3.一段时间之后,从 RefrenceQueue 读取,若读取不到相应 activity 的 Refrence,有可能发生泄露了,这个时候,再促发 gc,一段时间之后,再去读取,若在从 RefrenceQueue 还是读取不到相应 activity 的 refrence,可以断定是发生内存泄露了;

  • 4.发生内存泄露之后,dump,分析 hprof 文件,找到泄露路径(使用 haha 库分析); 5.存储结果并使用通知提醒用户存在泄漏。

这里用一张图片来直观的描述 LeakCannary 的执行流程。

其中,比较重要的是如何确定是否发生内存泄露,而如何确定发生内存泄露最主要的原理是通过 Refrence 和 RefrenceQueue。

这里只做一个总体的介绍,详细具体的流程可以往下看。

方案二:线上性能监控

==========

LeakCanary 是为线下内存泄漏 debug 而准备的,但是在实际的工作中,只知道线下性能监控是远远不够的。

如下图:

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

这时候线上应用性能监控的重要性就体现出来了。

如果我们能够对应用上线后的各项性能进行监控,在出现问题时能提取监控数据,从而定位到存在性能问题的地方快速解决,这不香吗?

我们通过与腾讯内部专家进行沟通知道,腾讯内部正在使用JVMTI进行线上内存监控,内存优化上,高级的JVMTI监控对象分配,然后形成日志传送到服务器端,这正是我们需要的线上监控内存的技术方案!

性能监控详解

======

用过Android和iOS的朋友应该印象比较深,相比于iOS,Android用的时间越长就会越卡。

在这个网络都追求5G了的时代,“卡”这个体验显然成为了一个极拉低印象分的问题。

不仅是阿里,还有腾讯、字节跳动、爱奇艺等大厂,小厂也是,都非常重视这个问题,在面试中,如果这个方向表现优异,你将会很值钱。

本文针对“性能优化”这个技术点,献上一份 Android性能优化的详细攻略,从各个方面对目标产品进行全方位的“优化”,让产品的性能从各个方面得到提升,希望对大家的学习和工作有所帮助。

App性能优化提要:

性能优化知识技能策略详解

============

性能优化这个点的知识要想讲明白篇幅会比较长,鉴于篇幅原因,我这里直接把详解部分整理成了一个章节,包括App启动优化、内存优化…等等一些分类完成的技术知识点。另外还有Android高级进阶必备的一些技术栈的整理。不仅仅有详细的底层原理的解析,还有专门的实践案例

需要的朋友,可以【点击此处加入】,即可查看获取这份资料的完整版;

第一章 设计思想与代码质量优化


  • 六大原则(单一职责原则、里氏替换原则、依赖倒转原则、接口隔离原则……)

  • 设计模式:结构型模式(桥接模式、适配器模式、装饰器模式、代理模式、门面(外观)模式……),创建型模式(建造者模式、单例模式、抽象工厂模式、工厂方法模式……)

  • 数据结构(数组、栈、队列、链表、树……)

  • 算法(排序算法、查找算法……)

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

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

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

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

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。如果你有需要,尽管拿走好了。

腾讯T3架构师学习专题资料

如果你觉得自己学习效率低,缺乏正确的指导,可以点击加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

s/618156601)!**

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值