I’ve been working on performance for so long, and I’ve been exposed to a lot of modules. To be honest, it’s not easy to do a good job on performance. Why do you say so? Because the need to contact the knowledge is too much, Android is a whole, affecting the whole body, not to say that only understand a module can do well.
In the process of learning, in addition to look at the source code, I also came into contact with a lot of knowledge on the Internet, you predecessors, their knowledge and experience to teach each other, let me take a lot of detours. I have many excellent technical articles and documents in my notes, and I decided to post them online so that anyone who wants to get into the field of Android development and optimization can read this article for a quick start. At the same time, it is also my knowledge of a comb, check the missing, lifelong learning.
This article is about the basics of Android performance optimization, covering all aspects of performance optimization (of course, if you have a great private article, you can also join this article).
Optimization experience and experience
- Android Performance Patterns: www.youtube.com/playlist?li…
- To accelerated the App: Android performance optimization conclusion: android.jobbole.com/81944/
- Mobile terminal performance monitoring solution Hertz: tech.meituan.com/hertz.html
- Android performance optimization follow-up: androidperformance.com/2015/03/31/…
- Virtual machine tuning for Android Performance optimization: Weishu. Me /2016/12/23/…
- [translation] Android UI performance optimization: zhuanlan.zhihu.com/p/27065828
Response speed
- Optimizing the Boot Times: source.android.com/devices/tec…
- How to calculate the start time of App in the Android: androidperformance.com/2015/12/31/…
fluency
- Evaluating the Performance: source.android.com/devices/tec…
- Understanding Systrace: source.android.com/devices/tec…
- Using ftrace: source.android.com/devices/tec…
- Identifying Capacity – Related Jank: source.android.com/devices/tec…
- Identifying Jitter – Related Jank: source.android.com/devices/tec…
- Display performance metrics we used over the years: blog.csdn.net/tencent_bug…
memory
- Low RAM Configuration: source.android.com/devices/tec…
- Linux Swap with Zram: www.tinylab.cn/linux-swap-…
- The relationship between memory consumption and loading different DPI resources on Android: www.tinylab.cn/android-loa…
- ZRAM SWAP: nekosc.com/technology/…
- Android OOM Case Study: tech.meituan.com/oom_analysi…
- Android code memory optimization advice – Android resource article: androidperformance.com/2015/07/20/…
- Android code memory optimization advice – Android official post: androidperformance.com/2015/07/20/…
- Android code memory optimization advice – Java official post: androidperformance.com/2015/07/20/…
- One of Android memory optimization: MAT use introduction: androidperformance.com/2015/04/11/…
- Android memory optimization # 2: MAT use advanced: androidperformance.com/2015/04/11/…
- Android memory optimization # 3: open the Bitmap in the MAT artwork: androidperformance.com/2015/04/11/…
- Android code memory optimization advice – OnTrimMemory optimization: androidperformance.com/2015/07/20/…
- Android LowMemoryKiller: gityuan.com/2016/09/17/…
- Principle of Android Anonymous Shared Memory (Ashmem) : juejin.cn/post/684490…
Graphics stack
- Android hardware acceleration principle and implementation of the abstract: tech.meituan.com/hardware-ac…
- Android6.0 display system (a) Surface create: blog.csdn.net/kc58236582/…
- SurfaceFlinger Android6.0 display system (2) create Surface: blog.csdn.net/kc58236582/…
- Android6.0 display system (3) management image buffer: blog.csdn.net/kc58236582/…
- Android6.0 display system (5) SurfaceFlinger service: blog.csdn.net/kc58236582/…
- Android6.0 shows the output of the system (6) image process: blog.csdn.net/kc58236582/…
- Android6.0 SurfaceControl analysis (a) SurfaceControl create & use Surface create & use: blog.csdn.net/kc58236582/…
- SurfaceControl and SurfaceFlinger communication
- How Android6.0 VSync signal to the user process: blog.csdn.net/kc58236582/…
- Android Graphics Overview: gityuan.com/2017/02/05/…
- Choreographer Principles: gityuan.com/2017/02/25/…
- SurfaceFlinger startup: gityuan.com/2017/02/11/…
- SurfaceFlinger Illustrated by gityuan.com/2017/02/18/…
- [HWUI] Android application UI hardware accelerated rendering technology are briefly introduced and study plan: blog.csdn.net/luoshengyan…
- [HWUI] Android application UI hardware accelerated rendering environment initialization process analysis: blog.csdn.net/luoshengyan…
- [HWUI] Android application UI hardware accelerated rendering of the preload resources Atlas Service (Asset Atlas Service) analysis: blog.csdn.net/luoshengyan…
- [HWUI] Android application UI hardware accelerated rendering of the Display List build process analysis: blog.csdn.net/luoshengyan…
- [HWUI] Android application UI hardware accelerated rendering of the Display List rendering process analysis: blog.csdn.net/luoshengyan…
- [HWUI] Android application UI hardware accelerated rendering the animation execution process analysis: blog.csdn.net/luoshengyan…
The virtual machine
- ART and Dalvik: source.android.com/devices/tec…
- The Android 8.0 ART Improvements: source.android.com/devices/tec…
- Dalvik bytecode evolved: source.android.com/devices/tec…
- Dalvik Executable format: source.android.com/devices/tec…
- Dalvik Executable instruction formats: source.android.com/devices/tec…
- Constraints: source.android.com/devices/tec…
- You ART: source.android.com/devices/tec…
- Was Debugging ART Garbage Collection: source.android.com/devices/tec…
- Implementing ART Just – In – Time (JIT) Compiler: source.android.com/devices/tec…
System framework
- Task Snapshots: source.android.com/devices/tec…
- Android Input subsystem: Input process creation, to monitor the thread startup: zhuanlan.zhihu.com/p/29152319
- Android Input subsystem: Input events, read and distributing, InputReader, InputDispatcher: zhuanlan.zhihu.com/p/29386642
- EventHub interactions with the equipment, Input events: zhuanlan.zhihu.com/p/30127752
- Android message mechanism, from the Java layer to the Native anatomy: zhuanlan.zhihu.com/p/29929031
- Understanding Android Binder mechanics (1/3)
- Understanding Android Binder (2/3) : ++ Layer: QIANGbo. space/2017-02-12/…
- Understanding Android Binder (3/3) : Java Layer: QIANGbo. space/2017-03-15/…
- Android Bander design and implementation – design article: blog.csdn.net/universus/a…
- A review of the four major components: gityuan.com/2017/05/19/…
- Four component ActivityRecord: gityuan.com/2017/06/11/…
- ContentProviderRecord: gityuan.com/2017/06/04/…
- BroadcastRecord: gityuan.com/2017/06/03/…
- ServiceRecord: gityuan.com/2017/05/25/…
- gityuan.com/2017/04/16/…
- Understanding Android Context: gityuan.com/2017/04/09/…
- Understanding the Application creation process: gityuan.com/2017/04/02/…
- Take a Window view of startActivity: gityuan.com/2017/01/22/…
- WMS — Start Window: gityuan.com/2017/01/15/…
- WMS — Startup process: gityuan.com/2017/01/08/…
Process management
- Cpuset: www.kernel.org/doc/Documen…
- Cgroup: www.kernel.org/doc/Documen…
- Android process scheduling algorithm gityuan.com/2016/08/07/…
- Linux Process Management (1) gityuan.com/2017/07/30/…
- Linux process Management – fork gityuan.com/2017/08/05/…
- Pid allocation method for Linux processes gityuan.com/2017/08/06/…
- Get through the Linux context series: processes, threads and scheduling: edu.csdn.net/course/deta…
- Process management for Android: Process creation: Qiangbo.space /2016-10-10/…
- Process management in Android: Process Priority: qiangbo.space/2016-11-23/…
- Process Management in Android: Memory Reclamation: Qiangbo. space/2016-12-08/…
- ……………………
A debugging tool
- Another Android performance profiling tool – simpleperf: zhuanlan.zhihu.com/p/25277481
- How to debug Android Framework: Weishu. Me /2016/05/30/…
- How to debug Android Native Framework: Weishu. Me /2017/01/14/…
- Catapult : catapult.gsrc.io/README.md
- Taught you how to use the Systrace (a) : zhuanlan.zhihu.com/p/27331842
- Taught you how to use Systrace optimization: (2) – lock zhuanlan.zhihu.com/p/27535205
Hardware related
- Flash Wear Management in Android Automotive: source.android.com/devices/tec…
- Architecture (A75 and architecture A55: www.10tiao.com/html/431/20…
- CPU Utilization is Wrong: www.brendangregg.com/blog/2017-0…
A programming language
- Explore Java hidden costs: academy. Realm. IO/cn/posts / 36…
Kernel
- Kernel Exploration: Regmap Framework: Simplified Slow I/O interface optimization performance www.tinylab.cn/kernel-expl…
- Embedded Linux boot time optimization www.tinylab.cn/elinux-org-…
We had a model
- How hard I try: mp.weixin.qq.com/s?__biz=MzU…
- Since some feeling: zhuanlan.zhihu.com/zmywly8866/…
- How to teach Yourself Android? zhuanlan.zhihu.com/p/20708611