搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Android性能优化之道:从底层原理到一线实践
0.00     定价 ¥ 99.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购14本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787111773900
  • 作      者:
    赵子健
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2025-03-01
收藏
编辑推荐

这是Google认证的Android方向开发专家撰写的一本专著,源于作者10年大厂的一线开发经验。全书没有无用的理论介绍,所有内容均从底层原理和一线实践两个维度对性能优化的方方面面进行深度解读。本书基于 Android 14 撰写,提供全部源码下载(具体下载方式见前言)。

展开
作者简介

赵子健

Google 开发者专家(GDE)Android方向,拥有10年一线大厂开发经验。深度参与了飞书、快应用、Lazada等多款知名大型应用的性能优化工作,对复杂业务场景下的性能调优有丰富的实战经验和深入洞见。

热衷技术分享与传播,长期活跃于 Google DevFest、Google I/O Extended、掘金等技术社区,积极参与各种社区活动,多次受邀进行主题演讲和技术分享,深受开发者欢迎。在掘金社区发布的《Android性能优化》小册,因内容详实、实用性强,广受好评。


展开
内容介绍

内容简介

这是一套从Android性能优化本质入手,指导读者实现从硬件层到操作系统层再到应用层全面优化的实战方法论。本书由Android方向Google开发者专家撰写,融合了作者10年大厂实战经验,其中不仅包括作者实操过的监控、优化、防劣化等方向的各种典型案例,还包括多个实战小技巧,可以帮助读者解决工作中遇到的90%以上的能优化问题。

本书内存、速度和流畅性、稳定性、包体积、耗电、磁盘占用、流量、降级这8个方向的性能优化内容。这些内容方向均从原理和实战两个维度进行解读。其中,原理部分直指优化的本质,不仅包括相关基础知识,还包括性能优化的底层逻辑;实战部分以指导读者实操为主要目标,以案例为主要讲解形式,深度解读作者精心总结的各种实战案例中用到的技术和原理。

本书基于 Android 14 撰写,但也会涉及 Android 14 以外的其他 Android 版本的源码。为了方便读者学习,本书提供全部源码下载(具体下载方式见前言)。


展开
精彩书评

与子健共事时,便知其在性能优化方面的理解深入且透彻。他所著《Android 性能优化之道》,不仅全面阐述了流畅性、稳定性等多方面优化知识,更强调了理解原理的重要性。这有助于开发者精准定位问题,从根本上解决性能瓶颈,提升应用竞争力。推荐给想提升 Android 开发水平的朋友。

——飞书移动端研发负责人 徐颖逸


这是一本相当完整且硬核的性能优化指南。每一个把书认真读完的读者,一定能在 Android 性能优化这一方向上达到全新的高度。阅读建议:本书的知识密度比较大,读的时候不用急,多停下思考和敲代码验证,认真把全书刷完,你会感受到内功提升给你带来的踏实感。

——扔物线(朱凯)Android & Kotlin GDE

子健老师是 Android 方向的 Google 开发者专家,是圈内有名的性能优化专家。本书全面且系统地介绍了 Android 应用性能优化的原理和方法,是一本理论基础扎实、应用价值很高的著作。随着行业的发展,Android 应用开发岗位的对工程师的要求也在逐渐提升,而如何成为资深 Android 开发专家,我想答案就在子健老师的这本书里。

——霍丙乾,腾讯高级工程师,Google 开发者专家(Kotlin 方向),《深入理解 Kotlin 协程》《深入实践 Kotlin 元编程》作者


子健在大厂工作多年,负责超大型应用的性能优化工作,功力深厚。本书涵盖了流畅性、稳定性、功耗、包体等多个应用优化的关键场景,从原理到实战,方法论清晰、落地效果显著,是提升用户体验的必备指南,也是提升开发者技能的进阶秘籍。

——Android GDE, 《Jetpack Compose 从入门到实战》作者 王鹏


对于业务规模庞大的公司来说,App 工程的复杂性也会陡然上升,因此也会遇到一些更为罕见或难以定位和处理的性能问题。赵老师拥有多年在一线大厂的实践经验,本书正是他深厚功力的结晶。书中详细讲解了各类性能问题的特征、定位,以及解决方案,是一本针对想要进阶自身技术能力的各层次开发者的佳作。 

——Google 开发者专家(Android 方向)/ 上海 Kotlin 用户组组织者 / 《Kotlin 编程实践》译者 乔禹昂


展开
目录

目  录?Contents

前 言

引言 如何才能做好性能优化 1

第1章 内存优化原理 8

1.1 虚拟内存 9

1.1.1 为什么需要虚拟内存 9

1.1.2 什么是虚拟内存 10

1.1.3 ELF文件 11

1.1.4 虚拟内存申请和释放 14

1.1.5 虚拟内存到物理内存 16

1.2 内存数据的组成 17

1.2.1 maps文件 17

1.2.2 Java堆内存 18

1.2.3 Native内存 26

1.3 内存优化方法论 26

1.3.1 及时清理数据 26

1.3.2 减少数据的加载 27

1.3.3 增加内存大小 29

第2章 内存优化实战 30

2.1 Java内存泄漏检测 31

2.1.1 手动分析 31

2.1.2 自动分析 36

2.2 Native内存泄漏检测 40

2.2.1 拦截malloc和free函数 40

2.2.2 获取Native堆栈 50

2.2.3 Native堆栈信息还原 51

2.2.4 开源工具介绍 55

2.3 Bitmap治理 55

2.3.1 字节码操作 56

2.3.2 超大Bitmap优化 61

2.3.3 Bitmap泄漏优化 65

2.4 线程栈优化 66

2.4.1 线程创建流程 67

2.4.2 减少线程数量 69

2.4.3 减小线程默认的栈

空间大小 70

2.5 默认webview内存释放 72

2.5.1 通过maps文件寻找地址 73

2.5.2 通过系统变量寻找地址 75

第3章 速度与流畅性优化原理 81

3.1 CPU 81

3.1.1 CPU的结构 82

3.1.2 CPU的工作流程 82

3.1.3 汇编指令 84

3.2 缓存 84

3.2.1 缓存的结构 84

3.2.2 寄存器 85

3.2.3 高速缓存 86

3.2.4 主存 86

3.3 任务调度 86

3.3.1 进程与线程的状态 87

3.3.2 进程调度 88

3.3.3 协程和线程 89

3.4 速度与流畅性优化方法论 90

3.4.1 提升CPU执行效率 90

3.4.2 提升缓存效率 92

3.4.3 提升任务调度效率 92

第4章 速度与流畅性优化实战 93

4.1 充分利用CPU闲置时刻 94

4.1.1 proc文件方案 94

4.1.2 times函数方案 98

4.2 减少CPU的等待 100

4.2.1 锁等待优化 100

4.2.2 I/O等待优化 108

4.3 绑定CPU大核 110

4.3.1 线程绑核函数 111

4.3.2 获取大核序列 111

4.4 GC抑制 113

4.4.1 GC的执行流程 114

4.4.2 抑制GC执行的方案 120

4.5 缓存策略优化 126

4.5.1 常用的淘汰策略 127

4.5.2 LFUCache 128

4.6 Dex类文件重排序 131

4.6.1 局部性原理 131

4.6.2 Redex使用流程 132

4.7 提升核心线程优先级 133

4.7.1 调整线程优先级的方式 134

4.7.2 需要调整优先级的线程 135

4.8 线程池优化 137

4.8.1 默认的线程池创建方式 137

4.8.2 线程池配置解析 139

4.8.3 线程池类型及创建 141

4.8.4 线程池监控 147

第5章 稳定性优化原理 152

5.1 ANR 153

5.1.1 ANR的类型 153

5.1.2 常见的ANR归因 168

5.2 Crash 169

5.2.1 Java Crash 169

5.2.2 Native Crash 172

5.3 稳定性优化方法论 174

第6章 稳定性优化实战 176

6.1 Native Crash监控方案 177

6.1.1 异常信号捕获 177

6.1.2 获取Native堆栈 178

6.1.3 使用开源库 182

6.2 ANR监控方案 188

6.2.1 信号捕获检测方案 188

6.2.2 AMS接口检测方案 191

6.2.3 抓取Trace文件 192

6.2.4 使用开源框架 193

6.3 OOM监控方案 193

6.3.1 Hprof文件结构 194

6.3.2 Hprof裁剪方案 197

6.3.3 使用开源框架 198

6.4 Native Crash分析思路 198

6.4.1 初步分析 199

6.4.2 堆栈分析 200

6.4.3 指令分析 200

6.5 ANR分析思路 201

6.5.1 初步分析 202

6.5.2 性能分析 203

6.5.3 直接和间接分析 205

6.6 慢函数监控 206

6.6.1 慢函数检测方法 206

6.6.2 主线程方法插桩 207

第7章 包体积优化原理 208

7.1 APK组成分析 208

7.1.1 dex文件 209

7.1.2 资源和so库文件 210

7.2 APK包构建流程 212

7.2.1 编译和打包流程 213

7.2.2 Gradle任务 216

7.3 包体积优化方法论 218

第8章 包体积优化实战 220

8.1 精简资源 222

8.1.1 删除无用资源 222

8.1.2 删除重复图片 224

8.1.3 混淆文件名 232

8.1.4 使用开源工具 233

8.2 精简dex文件 233

8.2.1 删减无用的代码 233

8.2.2 开启编译优化 236

8.2.3 dex重排 238

8.2.4 移除行号信息 239

8.3 精简so库 244

8.3.1 删除无用代码 244

8.3.2 删除冗余的so文件 245

8.3.3 删除符号信息 245

8.4 压缩dex文件 246

8.5 压缩so库 249

8.5.1 官方方案压缩so 249

8.5.2 自定义方案压缩so 249

8.6 动态加载资源文件 252

8.6.1 资源加载原理 253

8.6.2 动态加载资源 260

8.7 动态加载类文件 262

8.7.1 类加载原理 262

8.7.2 动态加载类 267

8.8 动态加载so库文件 267

8.8.1 so库加载原理 267

8.8.2 动态加载so库 270

8.9 动态加载四大组件 271

8.9.1 Activity启动流程 271

8.9.2 启动拦截 285

8.9.3 方法重定向 290

8.9.4 开源插件化框架 291

第9章 其他优化 292

9.1 耗电优化 293

9.1.1 耗电统计原理 293

9.1.2 耗电监控 301

9.1.3 耗电治理 305

9.2 流量优化 306

9.2.1 流量消耗监控 306

9.2.2 流量分类 310

9.2.3 流量优化 312

9.3 磁盘占用优化 313

9.3.1 磁盘监控 313

9.3.2 存储目录 314

9.3.3 磁盘优化 315

9.4 降级优化 316

9.4.1 性能指标采集和异常判断 317

9.4.2 降级任务的添加和调度 318

9.4.3 降级框架的效果度量 319

9.4.4 方案实现 320


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证