Android性能优化的底层逻辑

简介: Android性能优化的底层逻辑

前言


性能优化仿佛成了每个程序员开发的必经之路,要想出人头地,与众不同,你还真需要下点功夫去研究Android的性能优化,比如说,从优化应用启动、UI加载、再到内存、CPU、GPU、IO、还有耗电等等,当你展开一个方面做优化的时候,是不是也曾跟我一样,一头雾水,摸不着头脑,甚至找不到方法,然后看了大量的文章,最后记住了一些别人消化过的方式方法,就觉得自己学会了,其实我现在并不这么认为,我觉得性能优化肯定有一个固定的思维框架,让我们自发的去发现问题,然后解决问题,只有做到了自己发现,这样我们才能跟别人不一样,才能真正的掌握性能优化不是吗?下面就跟我一起看清楚性能优化的底层逻辑。

来看下Android系统架构


2d4f518ef2f0489a8cd8a653b7eb5176_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.jpg

还记得这张图吗?记得当年初学android第一节课,老师就拿了这张图,甚至说,到目前为止,我才能更深刻的理解这张图,下面由我来重新介绍这张图,也许会给你带来不一样的视角。你有没有发现,其实整个Android系统只分为两大块,Linux + Android 虚拟机,其他的部分不都是运行在这个上面的产物吗?(当然有些人会说,虚拟机不也是运行在linux的产物吗?答:是的。)如果你没明白,请允许我画个图,你也许就能明白我说的。请看:

image.png

程序A、B都运行在虚拟机中,而Java需要跟Native交互需要用到JNI,JNI和C和C++进行互相调用。最终C与Linux内核进行交互。 通过上图,如果让你抓重点的话,其实就两大模块对吧,一个是linux,一个是Android虚拟机。回到优化,那是不是说我们只需要做好两件事,一个是优化linux,一个是优化虚拟机呢?但其实我想告诉你,性能优化最终其实就一件事,基于 Linux对Android的运行时优化,这就是我们找到的最基础的底层逻辑。

底层逻辑下的本质


让我们基于Linux对Android运行时的优化,太抽象了,如果让你具体一点,你会想到什么?

硬件角度


先从硬件的角度出发,不管是Linux还是Android运行时,其实最终都牵扯到硬件资源的使用,那是不是说,如何做到硬件资源的合理运用,就是我们要做的呢?我觉得没错,首先你要知道硬件资源中最主要的资源是计算资源和存储资源

  • 计算资源主要是CPU、GPU,比如我们会考虑CPU占用率来作为优化的标准
  • 存储资源主要是虚拟内存和物理内存(磁盘),比如我们会考虑内存占用,磁盘占用等

简单说下如何利用好呢?

  • 比如现在的CPU都是多核的,能利用好多核计算,不是单核
  • 比如运行内存12G,那我们是不是可以考虑牺牲一些内存在提高性能呢?对的你是不是想说Google Chrome能占7、8个G内存?哈哈,因为Google比较喜欢拿空间资源换性能。

简单总结方法:

  • 合理利用CPU资源
  • 合理管理内存资源

至于再细化到如何做,这个就需要你自己去摸索了。

软件角度


从软件角度出发,其实就是我们开发的应用软件,操作系统除了计算资源和内存资源的管理,其他都是通过IO来管理,那么软件的本质其实就是IO,进和出,没错,举几个例子:如我们的软件在系统中是一个个的进程,创建/销毁,在进程中有一个个的线程,创建/销毁,在线程中有一个个的对象,创建/销毁,在一个对象中有一个个方法,创建/销毁,在方法中有一个个成员变量和局部变量,创建/销毁。你现在是不是已经找到优化的方向了,总结如下:

  • 优化进程
  • 优化线程
  • 优化对象
  • 优化方法
  • 优化变量

这才是我们要找的底层逻辑不是吗?任何问题的解决,我想都该有一个合理的思维框架,这样才能事半功倍,有迹可循。

总结


篇幅不长,讲了我对性能优化的深刻的理解,也许说出来你都懂,是的,大道理大家都懂,加油,你是最胖的。

目录
相关文章
|
26天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
105 4
|
2月前
|
算法 数据处理 Android开发
掌握安卓性能优化的秘诀:电池寿命与运行效率的提升
【10月更文挑战第6天】 本文深入探讨了安卓应用开发中的性能优化技巧,重点分析了影响电池寿命和运行效率的关键因素,并提供了针对性的优化策略。通过代码优化、资源管理、后台任务处理等方法,开发者可以显著提升应用的续航能力和流畅度。同时,结合具体案例,展示了如何在实际开发中应用这些技巧,确保应用在各种场景下都能保持高效运行。本文旨在为安卓开发者提供实用的性能优化指导,助力其打造更优质的应用体验。
69 2
|
4月前
|
缓存 监控 Android开发
探索iOS与安卓开发中的性能优化策略
在移动应用开发的竞技场上,iOS和安卓这两大操作系统不断推动着技术的边界。性能优化,作为提升用户体验的关键因素,已成为开发者们关注的焦点。本文将深入探讨两大平台上的性能优化实践,揭示如何通过工具、技术和策略来提升应用的响应速度和流畅度,同时考虑到电池寿命和内存管理等关键指标。
|
5月前
|
存储 Java 编译器
🔍深入Android底层,揭秘JVM与ART的奥秘,性能优化新视角!🔬
【7月更文挑战第28天】在Android开发中,掌握底层机制至关重要。从Dalvik到ART, Android通过采用AOT编译在应用安装时预编译字节码至机器码,显著提升了执行效率。ART还优化了垃圾回收,减少内存占用及停顿。为了优化性能,可减少DEX文件数量、优化代码结构利用内联等技术、合理管理内存避免泄漏,并使用ART提供的调试工具。
128 7
|
18天前
|
网络协议 Linux Android开发
深入探索Android系统架构与性能优化
本文旨在为读者提供一个全面的视角,以理解Android系统的架构及其关键组件。我们将探讨Android的发展历程、核心特性以及如何通过有效的策略来提升应用的性能和用户体验。本文不包含常规的技术细节,而是聚焦于系统架构层面的深入分析,以及针对开发者的实际优化建议。
32 1
|
1月前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
1月前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
37 5
|
1月前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
55 3
|
2月前
|
存储 缓存 网络协议
5个Android性能优化相关的深度面试题
本文涵盖五个Android面试题及其解答,包括优化应用启动速度、内存泄漏的检测与解决、UI渲染性能优化、减少内存抖动和内存溢出、优化网络请求性能。每个问题都提供了详细的解答和示例代码。
31 2
|
2月前
|
监控 测试技术 Android开发
掌握安卓性能优化的关键策略
【10月更文挑战第7天】 在移动应用开发领域,性能优化是一项至关重要的任务。本文将探讨安卓应用性能优化的重要性、关键策略以及实际操作建议,帮助开发者提升应用的用户体验和竞争力。通过深入浅出的方式,我们将从背景介绍到具体实践,全面解析安卓性能优化的各个维度。