Android 性能优化必知必会(2020-4-27)
这篇文章记录了 Android 性能优化所必须掌握的知识,涵盖性能优化相关的方方面面(当然如果读者同学你也有很棒的私藏文章,也可以加入到这篇文章里面).部分文章可能需要特殊的技巧才能看到,希望你已经掌握了这一部分技巧。另外附送Android 开发者学习路线(2020 版本)
由于微信设置,部分链接没法直接跳转,点击原文 可以查看完整版本,欢迎自荐和交流
这篇文章会持续更新,最新更新时间:2020-04-27
优化心得和经验
系列视频 Android Performance Patterns
给 App 提速:Android 性能优化总结
移动端性能监控方案 Hertz
Android 性能优化后续
Android性能优化之虚拟机调优
Android UI 性能优化
Performance Tips
Android battery and memory optimizations - Google I/O 2016
Google 免费的公开课 : Android Performance
Android APP 性能优化的一些思考
使用Android Studio和MAT进行内存泄漏分析
别催更啦!手淘全链路性能优化下篇
Android开发高手课
微信读书(Android)阅读引擎卡顿监控测试
Data science for mobile OS system optimization
支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
抖音包大小优化-资源优化
美团Java线程池实现原理及其在美团业务中的实践
响应速度
Android App 启动优化全记录
Optimizing Boot Times
Android 中如何计算 App 的启动时间
Google 官方文档 - Launch-time performance
Android性能优化笔记(一)——启动优化
深入探索Android启动速度优化
流畅度
Android 中的卡顿丢帧原因概述 - 方法论
Android 中的卡顿丢帧原因概述 - 系统篇
Android 中的卡顿丢帧原因概述 - 应用篇
Android 平台应用宝和讯飞输入法无障碍服务导致的全局卡顿分析
Evaluating Performance
Understanding Systrace
Using ftrace
Identifying Capacity-Related Jank
Identifying Jitter-Related Jank
那些年我们用过的显示性能指标
Slow rendering
Android 流畅度检测原理简析
Android JankTracker 原理解析
Android 界面性能调优手册
App流畅度优化:利用字节码插桩实现一个快速排查高耗时方法的工具
内存
Android 中低内存对性能的影响
Low RAM Configuration
Linux Swap 与 Zram 详解
Android 加载不同 DPI 资源与内存消耗间的关系
ZRAM SWAP 内存管理讲解
Android OOM 案例分析
Android 代码内存优化建议-Android 资源篇
Android 代码内存优化建议-Android 官方篇
Android 代码内存优化建议-Java 官方篇
Android 内存优化之一:MAT 使用入门
Android 内存优化之二:MAT 使用进阶
Android 内存优化之三:打开 MAT 中的 Bitmap 原图
Android 代码内存优化建议-OnTrimMemory 优化
Android LowMemoryKiller原理分析
Android 匿名共享内存(Ashmem)原理
Manage your app’s memory
Overview of memory management
一次过程Android平台native heap内存泄露的追查过程
浅谈Cache Memory
Bitmap优化详谈
实践App内存优化:如何有序地做内存分析与优化
图形栈
Android 中的 Hardware Layer 详解
Android 硬件加速原理与实现简介
Android 图形系统概述
Choreographer 原理
SurfaceFlinger 启动篇
SurfaceFlinger 绘图篇
Android 应用程序 UI 硬件加速渲染技术简要介绍和学习计划
Android 应用程序 UI 硬件加速渲染环境初始化过程分析
Android 应用程序 UI 硬件加速渲染的预加载资源地图集服务(Asset Atlas Service)分析
Android 应用程序 UI 硬件加速渲染的 Display List 构建过程分析
Android 应用程序 UI 硬件加速渲染的 Display List 渲染过程分析
Android 应用程序 UI 硬件加速渲染的动画执行过程分析
Android硬件加速(一)- 理解Android硬件加速原理的小白文
Android硬件加速(二)- RenderThread与OpenGL GPU渲染
Android中的GraphicBuffer同步机制-Fence
Android P 图形显示系统(一)硬件合成HWC2
Android P 图像显示系统(二)GraphicBuffer和Gralloc分析
Android P 图像显示系统(三)Android HWUI 绘制流程
Android P 图形显示系统(四) Android VirtualDisplay解析
Android P 图形显示系统(五) 上层Client和SurfaceFlinger的交互
Android P 图形显示系统(六) SurfaceFlinger合成流程(一)
Android P 图形显示系统(七) SurfaceFlinger合成流程(二)
Android P 图形显示系统(八) SurfaceFlinger合成流程(三)
Android P 图形显示系统(九) Android图形显示子系统概述
Android P 图形显示系统(十) BufferQueue(一)
Android P 图形显示系统(十一) BufferQueue(二)
Android P 图形显示系统(十二) BufferQueue(三)
渲染流水线中的光栅化1
渲染流水线中的光栅化2
虚拟机
ART and Dalvik
Android 8.0 ART Improvements
Dalvik bytecode
Dalvik Executable format
Dalvik Executable instruction formats
Constraints
Configuring ART
Debugging ART Garbage Collection
Implementing ART Just-In-Time (JIT) Compiler
深入学习Android:虚拟机&运行时
Android性能优化之虚拟机调优
Android上的Dalvik虚拟机
Android上的ART虚拟机
Android ART 并行拷贝垃圾回收
系统框架
Task Snapshots
Android Input 子系统:Input 进程的创建,监听线程的启动
Android Input 子系统:Input 事件的产生、读取和分发,InputReader、InputDispatcher
EventHub 与设备、Input 事件的交互
Android 消息机制,从Java 层到 Native 层剖析
理解 Android Binder 机制(1/3):驱动篇
理解 Android Binder 机制(2/3):C++ 层
理解 Android Binder 机制(3/3):Java 层
Android Bander 设计与实现 - 设计篇
四大组件之综述
四大组件之 ActivityRecord
四大组件之 ContentProviderRecord
四大组件之 BroadcastRecord
四大组件之 ServiceRecord
简述 Activity 与 Window 关系
理解 Android Context
理解 Application 创建过程
以 Window 视角来看 startActivity
WMS—启动窗口(StartingWindow)
WMS—启动过程
写给 Android 应用工程师的 Binder 原理剖析
Binder系列—开篇
Binder系列1—Binder Driver初探
Binder系列2—Binder Driver再探
Binder系列3—启动ServiceManager
Binder系列4—获取ServiceManager
Binder系列5—注册服务(addService)
Binder系列6—获取服务(getService)
Binder系列7—framework层分析
Binder系列8—如何使用Binder
Binder系列9—如何使用AIDL
Binder系列10—总结
彻底理解Android Binder通信架构
Android Bander设计与实现 - 设计篇
Binder学习指南
你知道android的MessageQueue.IdleHandler吗?
聊一聊Android的消息机制
卢半山 - 反思|Android 事件拦截机制的设计与实现
卢半山 - Binder 内存拷贝的本质和变迁
卢半山 - AIDL 中 inout 的本质
卢半山 - Binder 的异常机制
卢半山 - Binder 世界中的代理机制(上)
卢半山 - Binder 概述
Android 系统架构 —— Choreographer 的工作机制
稳定性
彻底理解安卓应用无响应机制
应用与系统稳定性第一篇—ANR问题分析的一般套路
应用与系统稳定性第二篇—ANR的监测与信息采集
应用与系统稳定性第三篇—FD泄露问题漫谈
应用与系统稳定性第四篇—单线程导致的空指针问题分析
应用与系统稳定性第五篇—Watchdog原理和问题分析
应用与系统稳定性第六篇—JVM垃圾回收之finalize执行时引起timed out 闪退分析
应用与系统稳定性第七篇— 用Asan 提前解决NDK疑难crash
功耗
Android 功耗改进
进程管理
cpuset
cgroup
Android 进程调度之 adj 算法
Linux 进程管理(一)
Linux 进程管理(二)–fork
Linux 进程 pid 分配法
收费培训视频 打通 Linux 脉络系列:进程、线程和调度
Android 系统中的进程管理:进程的创建
Android 系统中的进程管理:进程的优先级
Android 系统中的进程管理:内存的回收
Android系统上的进程管理:进程的调度
Android 系统启动:init 进程与 init 语言
Android 进程保活招式大全
进程和线程
通过线程提升性能
解读Android进程优先级ADJ算法
IO
Android 性能优化 —— IO 的监控与优化
从内核文件系统看文件读写过程
认真分析mmap:是什么 为什么 怎么用
调试工具
另一个 Android 性能剖析工具——simpleperf
Simpleperf
如何调试 Android Framework
如何调试 Android Native Framework
Catapult 项目
手把手教你使用Systrace(一)
手把手教你使用Systrace(二)——锁优化
使用Android Studio和MAT进行内存泄漏分析
Systrace 简介
Systrace 基础知识 - Systrace 预备知识
Systrace 基础知识 - Why 60 fps ?
Systrace 基础知识 - SystemServer 解读
Systrace 基础知识 - Input 解读
Systrace 基础知识 - Vsync 产生与工作机制解读
Systrace 基础知识 - Vsync-App :基于 Choreographer 的渲染机制详解
Systrace 基础知识 - MainThread 和 RenderThread 解读
Systrace 基础知识 - Binder 和锁竞争解读
Systrace 基础知识 - Triple Buffer 解读
Systrace 基础知识 - CPU Info 解读
Tracing Window Transitions
Android性能问题分析之bugreport
腾讯 Apm 框架 Matrix 源码阅读 - gradle插件
腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 架构解析
腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 AnrTracer
腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 StartupTracer
腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 FrameTracer
腾讯 Apm 框架 Matrix 源码阅读 - 架构解析
硬件相关
Flash Wear Management in Android Automotive
Cortex-A75 和 Cortex-A55
CPU Utilization is Wrong
编程语言
探索 Java 隐藏的开销
Kotlin 中文文档
Java多态在android中的实现
Cancellation and Exceptions in Coroutines
Coroutines: First things first
Cancellation in coroutines
Exceptions in Coroutines
Coroutines & Patterns for work that shouldn’t be cancelled
彻底理解引用在 Android 和 Java 中的工作原理
Linux
内核探索:Regmap 框架:简化慢速 I/O 接口优化性能
嵌入式 Linux 启动时间优化
Linux系统调用(syscall)原理
linux内核分析——CFS(完全公平调度算法)
从几个问题开始理解CFS调度器
CFS调度器(1)-基本原理
CFS调度器(2)-源码解析
CFS调度器(3)-组调度
CFS调度器(4)-PELT(per entity load tracking)
CFS调度器(5)-带宽控制
CFS调度器(6)-总结
LWN 456904: 避免磁盘回写(writeback),抑制(throttling)缓存(page cache)写入
LWN 384093: 有关 “回写”(writeback)的问题讨论
LWN 211505: 避免和解决内存碎片化
SMP Primer for Android
内存分配1 - 空闲链表和内存池
内存分配2 - Buddy系统的原理
内存分配3 - Linux中Buddy系统的实现
Linux中的内存压缩
研究Linux内核的乐趣
Flutter
深入 Flutter 的高性能图形渲染
跨平台技术演进及Flutter未来
深入理解Flutter引擎启动
Flutter渲染机制—UI线程
Flutter渲染机制—GPU线程
Fuchsia
许中兴博士演讲:Fuchsia OS 简介
技术之外的思考
工作以来的一些感悟
如何自学Android?
浅谈软件工程师的代码素养
别让自己“墙”了自己
使用简单的逻辑方法进行独立思考
面试题
如何衡量一个Android应用开发人员的能力
2018Android面试总结
Android2017-2018最新面试题(3-5年经验个人面试经历)
Android 开发工程师面试指南
阿里巴巴面试题
美团面试题
豌豆荚三面试题
蜻蜓FM面试题
新浪微博面试题
网易杭研面试题
2019.07 Android 面试真题集锦
快手,字节跳动,百度,美团Offer之旅
美帝面试二三事
本文其他地址
由于博客留言交流不方便,点赞或者交流,可以移步本文的知乎或者掘金页面
知乎 - Android 性能优化必知必会
关于我 && 博客
关于我 , 非常希望和大家一起交流 , 共同进步 .
博客内容导航
优秀博客文章记录 - Android 性能优化必知必会