跳转至

Android 性能优化技术月报 | 2023 年 7 月

每个月都会有一些 Android 性能优化相关的优质内容发布,然而,碎片化阅读使得这些知识难以形成完整体系,且容易被遗忘。为解决这些问题,我决定尝试使用技术月报的形式,总结我在最近一个月内查阅的 Android 性能优化相关的优质内容。

月报的主要内容包括:整理展示我在最近一个月所查阅的 Android 性能优化领域的最新技术动态、精选博客,精选视频等内容。

最新动态

btrace 2.0 发布

重要升级!btrace 2.0 技术原理大揭秘

btrace 是字节开源的高性能 Trace 工具,比起 systrace 或者 profile 要好用很多,目前 btrace 2.0 版本已发布,主要包括以下升级

  • 使用体验:支持 Windows 啦!此外将脚本实现从 Python 切至 Java 并去除各种权限要求,因脚本工具可用性问题引起的用户使用打断次数几乎降为 0,同时还将 Trace 产物切至 PB 协议,产物体积减小 70%,网页打开速度提升 7 倍!
  • 性能体验:通过大规模改造方法 Trace 逻辑,将 App 方法 Trace 底层结构由字符串切换为整数,实现内存占用减少 80%,存储改为 mmap 方式、优化无锁队列逻辑、提供精准插桩策略等,百万量级方法全插桩下性能损耗进一步降低至 15%!
  • 监控数据:新增 4 项数据监控能力,重磅推出渲染详情采集能力!同时还新增 Binder、线程启动、Wait/Notify/Park/Unpark 等详情数据!

精选博客

百度App启动性能优化实践篇

百度App启动性能优化实践篇

本系列文章介绍了百度 App 启动优化的经验,将低端机启动性能优化拆分为了观测设施、基础设施和业务优化 3 个子方向,总得来说,是一份不可多得的系统化的启动优化指南

  • 观测设施:建设低端机标准,建设启动性能衡量指标;建设线上、线下防劣化机制,实现线下随版的性能问题前置和线上问题的自动化分析与归因;
  • 基础设施:三驾马车,高效性能工具、高性能组件、调度框架。高效性能工具主要包括Trace/Hook/TimeProfiler,服务于快速发现并自动化性能问题;高性能组件主要优化手-百基础性能并赋能业务,突破系统约束与瓶颈,建设行业内领先的基础设施;调度机制作为优化的核心手段,业务初始化任务可通过接入调度器快速实现性能优化;
  • 业务优化:根据工具输出性能问题,协同业务优化不规范耗时、不合理“预”,初始化任务通过接入调度框架方式达到优化效果。

Android 视角谈 Bazel 与 Gradle 构建系统

Android 视角谈 Bazel 与 Gradle 构建系统

Bazel 是 Google 所开源的一款构建系统,其在 Google 内部用于支持超大规模(TB 级别)的仓库构建,这充分证明了 Bazel 构建系统卓越的性能表现。虽然现阶段大多数人可能不会用到 Bazel,但也可以了解一下,开阔视野。

本文首先从构建系统设计和理念的角度对 Bazel 和 Gradle 进行了深度的对比,然后围绕 Android 构建方面的表现从性能和生态两个角度进行了阐述,总得来说

  • 性能角度:对于超大型或者巨型工程来讲,Bazel 因其优秀的设计理念而上限更高。但这个超大型工程的定义,据作者测算,大概量级是在抖音 Android 现有规模的 2-3 倍左右,而现有规模的项目 Gradle 经过优化的表现依然有着较大的承载空间。
  • 生态角度:Bazel 在当前 Android 构建领域不够完善且缺乏官方支持,比如 AGP,KGP 等官方插件对应到 Bazel 只能依赖于社区维护,长期来看,是否能让生态成长起来还有较大的不确定性。

Android CPU 性能优化的一些思路

手把手教女朋友做 Android CPU性能优化

想要做好性能优化,本质上就是要求我们在操作系统层和应用层对如何利用 CPU 和存储器进行优化,本文主要介绍了 CPU 性能优化的一些思路

  • 减少程序指令数
  • 利用 CPU 闲置时间
  • 减少 CPU 等待
  • 降低时钟周期时间
  • 降低每条指令的平均时间周期
  • 提升任务调度优先级

Android 内存优化之极致清理

Android 内存优化之极致清理

小米小组件审核要求进程内存占用 PSS 必须小于 35M,本文介绍了作者将小组件进程 PSS 占用从 135M 降低到 35M 的过程,如果你也在做小组件的内存优化,本文应该对你很有帮助

内存认知ReMake

内存认知ReMake

本文图文并茂地介绍了 Android 内存相关的一些知识点,主要包括以下内容

  • 手机硬件上的内存
  • 为什么内存不能爆满
  • app 运行时内存结构
  • 物理内存和虚拟内存
  • 其它的一些常见问题分享

Android 内存占用常用分析方法

Android 内存优化方法

做优化相关的工作,最重要的就是要有可以量化的指标。所以我们先要知道哪些可以衡量系统占用内存的方法和工具。本文介绍了一些查看内存占用情况的方法和工具:

  • dumpsys meminfo
  • procrank
  • /proc/pid/maps
  • /proc/pid/smaps
  • /proc/meminfo
  • PageMap
  • ion
  • Kernel used
  • Kernel reserved
  • MAT
  • malloc_debug

精选视频

理解 Android ART 虚拟机

社区说|理解 Android ART 虚拟机

本视频主要分享了 ART 虚拟机堆的组成和创建,对象申请和释放流程,以及堆内存优化等内容:

社区活动

货拉拉移动技术开放日

货拉拉移动技术开放日,分享内容如下:

  • Android 功耗监控与优化实践
  • 货拉拉云真机平台的演进与实践
  • Android 出海应用开发那些事
  • APP 动态化路由设计与实践
  • 货拉拉 iOS 端路由框架开源
  • AI技术在反馈中的探索与应用
  • 未来已来!探索移动端新的机遇与挑战

最后更新: November 17, 2024