Android性能优化之道:从底层原理到一线实践

Android性能优化之道:从底层原理到一线实践

移动开发

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
¥59.00¥53.10
年中大促丨满减特价折上折截止至:2025-06-23 00:00:00了解详情
年中大促丨电子书4折满减每满 100 减 60活动详情

作品简介

这是一本深度解读Android性能优化底层原理并给出可落地的一线实践指导的专业技术书。书中不仅原理讲解透彻,而且会给出很多基于读者实际工作成绩的实战案例。本书共分为11章,其中第1章总体介绍Android性能优化的背景、本质、方法论和落地方向,第2~10章从原理和实战两个层面分别对内存优化、速度优化、稳定性优化、包体积优化及其他优化进行解读。最后一章是作者多年优化从业经验的总结。

赵子健,现为字节跳动资深Android开发工程师,负责飞书客户端性能品质优化工作。熟悉Android和Linux系统底层原理,擅长性能优化。曾任职于腾讯、阿里巴巴,有丰富的项目性能优化和架构经验。谷歌开发者社区深度参与者(多次进行技术分享),谷歌认证的国内Android方向的GDE(谷歌开发者专家,目前国内仅有12位Android方向的谷歌开发者专家)之一。

作品目录

  1. Preface 前言
  2. Introduction 引言 如何才能做好性能优化
  3. 性能优化的本质
  4. 性能优化的维度
  5. 性能优化的难点
  6. Chapter 1 第1章 内存优化原理
  7. 1.1 虚拟内存
  8. 1.1.1 为什么需要虚拟内存
  9. 1.1.2 什么是虚拟内存
  10. 1.1.3 ELF文件
  11. 1.1.4 虚拟内存申请和释放
  12. 1.1.5 虚拟内存到物理内存
  13. 1.2 内存数据的组成
  14. 1.2.1 maps文件
  15. 1.2.2 Java堆内存
  16. 1.2.3 Native内存
  17. 1.3 内存优化方法论
  18. 1.3.1 及时清理数据
  19. 1.3.2 减少数据的加载
  20. 1.3.3 增加内存大小
  21. Chapter 2 第2章 内存优化实战
  22. 2.1 Java内存泄漏检测
  23. 2.1.1 手动分析
  24. 2.1.2 自动分析
  25. 2.2 Native内存泄漏检测
  26. 2.2.1 拦截malloc和free函数
  27. 2.2.2 获取Native堆栈
  28. 2.2.3 Native堆栈信息还原
  29. 2.2.4 开源工具介绍
  30. 2.3 Bitmap治理
  31. 2.3.1 字节码操作
  32. 2.3.2 超大Bitmap优化
  33. 2.3.3 Bitmap泄漏优化
  34. 2.4 线程栈优化
  35. 2.4.1 线程创建流程
  36. 2.4.2 减少线程数量
  37. 2.4.3 减小线程默认的栈空间大小
  38. 2.5 默认webview内存释放
  39. 2.5.1 通过maps文件寻找地址
  40. 2.5.2 通过系统变量寻找地址
  41. Chapter 3 第3章 速度与流畅性优化原理
  42. 3.1 CPU
  43. 3.1.1 CPU的结构
  44. 3.1.2 CPU的工作流程
  45. 3.1.3 汇编指令
  46. 3.2 缓存
  47. 3.2.1 缓存的结构
  48. 3.2.2 寄存器
  49. 3.2.3 高速缓存
  50. 3.2.4 主存
  51. 3.3 任务调度
  52. 3.3.1 进程与线程的状态
  53. 3.3.2 进程调度
  54. 3.3.3 协程和线程
  55. 3.4 速度与流畅性优化方法论
  56. 3.4.1 提升CPU执行效率
  57. 3.4.2 提升缓存效率
  58. 3.4.3 提升任务调度效率
  59. Chapter 4 第4章 速度与流畅性优化实战
  60. 4.1 充分利用CPU闲置时刻
  61. 4.1.1 proc文件方案
  62. 4.1.2 times函数方案
  63. 4.2 减少CPU的等待
  64. 4.2.1 锁等待优化
  65. 4.2.2 I/O等待优化
  66. 4.3 绑定CPU大核
  67. 4.3.1 线程绑核函数
  68. 4.3.2 获取大核序列
  69. 4.4 GC抑制
  70. 4.4.1 GC的执行流程
  71. 4.4.2 抑制GC执行的方案
  72. 4.5 缓存策略优化
  73. 4.5.1 常用的淘汰策略
  74. 4.5.2 LFUCache
  75. 4.6 Dex类文件重排序
  76. 4.6.1 局部性原理
  77. 4.6.2 Redex使用流程
  78. 4.7 提升核心线程优先级
  79. 4.7.1 调整线程优先级的方式
  80. 4.7.2 需要调整优先级的线程
  81. 4.8 线程池优化
  82. 4.8.1 默认的线程池创建方式
  83. 4.8.2 线程池配置解析
  84. 4.8.3 线程池类型及创建
  85. 4.8.4 线程池监控
  86. Chapter 5 第5章 稳定性优化原理
  87. 5.1 ANR
  88. 5.1.1 ANR的类型
  89. 5.1.2 常见的ANR归因
  90. 5.2 Crash
  91. 5.2.1 Java Crash
  92. 5.2.2 Native Crash
  93. 5.3 稳定性优化方法论
  94. Chapter 6 第6章 稳定性优化实战
  95. 6.1 Native Crash监控方案
  96. 6.1.1 异常信号捕获
  97. 6.1.2 获取Native堆栈
  98. 6.1.3 使用开源库
  99. 6.2 ANR监控方案
  100. 6.2.1 信号捕获检测方案
  101. 6.2.2 AMS接口检测方案
  102. 6.2.3 抓取Trace文件
  103. 6.2.4 使用开源框架
  104. 6.3 OOM监控方案
  105. 6.3.1 Hprof文件结构
  106. 6.3.2 Hprof裁剪方案
  107. 6.3.3 使用开源框架
  108. 6.4 Native Crash分析思路
  109. 6.4.1 初步分析
  110. 6.4.2 堆栈分析
  111. 6.4.3 指令分析
  112. 6.5 ANR分析思路
  113. 6.5.1 初步分析
  114. 6.5.2 性能分析
  115. 6.5.3 直接和间接分析
  116. 6.6 慢函数监控
  117. 6.6.1 慢函数检测方法
  118. 6.6.2 主线程方法插桩
  119. Chapter 7 第7章 包体积优化原理
  120. 7.1 APK组成分析
  121. 7.1.1 dex文件
  122. 7.1.2 资源和so库文件
  123. 7.2 APK包构建流程
  124. 7.2.1 编译和打包流程
  125. 7.2.2 Gradle任务
  126. 7.3 包体积优化方法论
  127. Chapter 8 第8章 包体积优化实战
  128. 8.1 精简资源
  129. 8.1.1 删除无用资源
  130. 8.1.2 删除重复图片
  131. 8.1.3 混淆文件名
  132. 8.1.4 使用开源工具
  133. 8.2 精简dex文件
  134. 8.2.1 删减无用的代码
  135. 8.2.2 开启编译优化
  136. 8.2.3 dex重排
  137. 8.2.4 移除行号信息
  138. 8.3 精简so库
  139. 8.3.1 删除无用代码
  140. 8.3.2 删除冗余的so文件
  141. 8.3.3 删除符号信息
  142. 8.4 压缩dex文件
  143. 8.5 压缩so库
  144. 8.5.1 官方方案压缩so
  145. 8.5.2 自定义方案压缩so
  146. 8.6 动态加载资源文件
  147. 8.6.1 资源加载原理
  148. 8.6.2 动态加载资源
  149. 8.7 动态加载类文件
  150. 8.7.1 类加载原理
  151. 8.7.2 动态加载类
  152. 8.8 动态加载so库文件
  153. 8.8.1 so库加载原理
  154. 8.8.2 动态加载so库
  155. 8.9 动态加载四大组件
  156. 8.9.1 Activity启动流程
  157. 8.9.2 启动拦截
  158. 8.9.3 方法重定向
  159. 8.9.4 开源插件化框架
  160. Chapter 9 第9章 其他优化
  161. 9.1 耗电优化
  162. 9.1.1 耗电统计原理
  163. 9.1.2 耗电监控
  164. 9.1.3 耗电治理
  165. 9.2 流量优化
  166. 9.2.1 流量消耗监控
  167. 9.2.2 流量分类
  168. 9.2.3 流量优化
  169. 9.3 磁盘占用优化
  170. 9.3.1 磁盘监控
  171. 9.3.2 存储目录
  172. 9.3.3 磁盘优化
  173. 9.4 降级优化
  174. 9.4.1 性能指标采集和异常判断
  175. 9.4.2 降级任务的添加和调度
  176. 9.4.3 降级框架的效果度量
  177. 9.4.4 方案实现