指点成金-最美分享吧

登录

一文读懂 Android 内存优化,让你的机器持续丝滑

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了一文读懂 Android 内存优化,让你的机器持续丝滑相关的知识,希望对你有一定的参考价值。

内存优化可以说是性能优化中最重要的优化点之一。不合理的内存占用会影响页面的流畅度、造成界面卡顿,减少应用存活时间,甚至导致用户应用程序发生 OOM(out of memory)崩溃。因此,我们需要找准性能优化的命门——内存优化,在各种机器资源上保持优秀的流畅性和稳定性。

虽然android有有优秀的内存管理机制,内存释放有垃圾收集器(GC)来回收。但内存的不合理使用还是会造成一系列的性能问题,比如短时间分配大量内存对象、内存泄漏等问题。

内存问题的根本原因

一、内存使用不合理

主要分为三个方面:

  • 浪费内存,简单来理解就是用一个人住着一千平米的大平层
  • 大量创建小对象,产生碎片,内存碎片会造成JVM中的内存管理效率变低,当后面申请大块内存的时候效率就变差,它需要把小对象(碎片)进行转移压缩,以腾出更大的空间给大的对象使用。简单理解,这个时候JVM的效率就会变差,你的应用程序性能变差,甚至可能引起卡顿。
  • 频繁创建对象,特别是较大的对象,造成内存抖动,也即应用程序使用的内存忽多忽少,会频繁的触发GC,从而影响JVM的运行效率。

二、内存泄漏

JVM是支持自动GC的,也就是说JVM帮助你管理内存,当有不再使用的对象时,会被JVM自动回收,此称之为GC。但如果对象长期处于『使用』状态,并且超出了它本应该存的周期,无法被及时GC,这就会造成泄露。时间过长,可能会把系统配额Java Heap空间耗尽。应用程序会因没有内存创建对象而OOM,就会crash。即使没有crash,因为剩余空间较少,会频繁触发GC,从而导致应用程序卡顿严重。

内存泄露的根本原因是对象的生命周期错乱 ,对象存活了超过了其本该的生命周期,导致它本该生命周期结束时无法被GC,便产生了泄露。

如何解决内存问题

无论是什么电子设备的开发,内存问题永远都是一个很复杂、无底洞但又必须去直面解决的问题。在进行 Android 内存优化之前,我们必须了解内存优化的背景知识、拥有专业的技术功底、掌握常用的工具与手段。

为了帮助大家更好地掌握内存优化原理,成为真正的中高级Android开发者,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份 Android 性能优化学习资料,包含《Android 性能优化实战篇》和 360°全方面性能调优有需要者可点击文末卡片查看获取方式~

《Android性能优化实战篇》

《360°全方面性能调优》

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

  • 第一节 六大原则
  • 第二节 设计模式
  • 第三节 数据结构
  • 第四节 算法

第二章、程序性能优化

  • 第一节 启动速度与执行效率优化
  • 第二节 布局检测与优化
  • 第三节 内存优化
  • 第四节 耗电优化
  • 第五节 网络传输与数据储存优化
  • 第六节 APK大小优化
  • 第七节 屏幕适配
  • 第八节 OOM问题原理解析
  • 第九节 ANR问题解析
  • 第十节 Crash监控方案

第三章、开发效率优化

  • 第一节 分布式版本控制系统Git
  • 第二节 自动化构建系统Gradle

**第四章、**APP性能优化实践

  • 第一节 启动速度
  • 第二节 流畅度
  • 第三节 抖音在APK包大小资源优化的实践
  • 第四节 优酷响应式布局技术全解析
  • 第五节 网络优化
  • 第六节 手机淘宝双十一性能优化项目揭秘
  • 第七节 高德APP全链路源码依赖分析
  • 第八节 彻底干掉OOM的实战经验分享
  • 第九节 微信 Android终端内存优化实践

此外,这里为想要进阶提升却苦于没有方向的Android开发者准备了一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

有需要性能优化资料及全套Android学习笔记者可点击文末卡片查看获取方式哦~

文末寄语

性能优化是持续性的需求,是集成性的反馈。在 Android 开发的过程中,只有持续不断地对 app 或网站进行优化,才能建立出色的用户体验,持续创造价值。对于个人而言亦如此,只有不断提升自我,才能保持自我的核心竞争力,让自己永远符合市场与时代的需求。

最后,学习技术是一条漫长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

以上是关于一文读懂 Android 内存优化,让你的机器持续丝滑的主要内容,如果未能解决你的问题,请参考以下文章