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

  1. Android Performance Patterns: www.youtube.com/playlist?li…
  2. To accelerated the App: Android performance optimization conclusion: android.jobbole.com/81944/
  3. Mobile terminal performance monitoring solution Hertz: tech.meituan.com/hertz.html
  4. Android performance optimization follow-up: androidperformance.com/2015/03/31/…
  5. Virtual machine tuning for Android Performance optimization: Weishu. Me /2016/12/23/…
  6. [translation] Android UI performance optimization: zhuanlan.zhihu.com/p/27065828

Response speed

  1. Optimizing the Boot Times: source.android.com/devices/tec…
  2. How to calculate the start time of App in the Android: androidperformance.com/2015/12/31/…

fluency

  1. Evaluating the Performance: source.android.com/devices/tec…
  2. Understanding Systrace: source.android.com/devices/tec…
  3. Using ftrace: source.android.com/devices/tec…
  4. Identifying Capacity – Related Jank: source.android.com/devices/tec…
  5. Identifying Jitter – Related Jank: source.android.com/devices/tec…
  6. Display performance metrics we used over the years: blog.csdn.net/tencent_bug…

memory

  1. Low RAM Configuration: source.android.com/devices/tec…
  2. Linux Swap with Zram: www.tinylab.cn/linux-swap-…
  3. The relationship between memory consumption and loading different DPI resources on Android: www.tinylab.cn/android-loa…
  4. ZRAM SWAP: nekosc.com/technology/…
  5. Android OOM Case Study: tech.meituan.com/oom_analysi…
  6. Android code memory optimization advice – Android resource article: androidperformance.com/2015/07/20/…
  7. Android code memory optimization advice – Android official post: androidperformance.com/2015/07/20/…
  8. Android code memory optimization advice – Java official post: androidperformance.com/2015/07/20/…
  9. One of Android memory optimization: MAT use introduction: androidperformance.com/2015/04/11/…
  10. Android memory optimization # 2: MAT use advanced: androidperformance.com/2015/04/11/…
  11. Android memory optimization # 3: open the Bitmap in the MAT artwork: androidperformance.com/2015/04/11/…
  12. Android code memory optimization advice – OnTrimMemory optimization: androidperformance.com/2015/07/20/…
  13. Android LowMemoryKiller: gityuan.com/2016/09/17/…
  14. Principle of Android Anonymous Shared Memory (Ashmem) : juejin.cn/post/684490…

Graphics stack

  1. Android hardware acceleration principle and implementation of the abstract: tech.meituan.com/hardware-ac…
  2. Android6.0 display system (a) Surface create: blog.csdn.net/kc58236582/…
  3. SurfaceFlinger Android6.0 display system (2) create Surface: blog.csdn.net/kc58236582/…
  4. Android6.0 display system (3) management image buffer: blog.csdn.net/kc58236582/…
  5. Android6.0 display system (5) SurfaceFlinger service: blog.csdn.net/kc58236582/…
  6. Android6.0 shows the output of the system (6) image process: blog.csdn.net/kc58236582/…
  7. Android6.0 SurfaceControl analysis (a) SurfaceControl create & use Surface create & use: blog.csdn.net/kc58236582/…
  8. SurfaceControl and SurfaceFlinger communication
  9. How Android6.0 VSync signal to the user process: blog.csdn.net/kc58236582/…
  10. Android Graphics Overview: gityuan.com/2017/02/05/…
  11. Choreographer Principles: gityuan.com/2017/02/25/…
  12. SurfaceFlinger startup: gityuan.com/2017/02/11/…
  13. SurfaceFlinger Illustrated by gityuan.com/2017/02/18/…
  14. [HWUI] Android application UI hardware accelerated rendering technology are briefly introduced and study plan: blog.csdn.net/luoshengyan…
  15. [HWUI] Android application UI hardware accelerated rendering environment initialization process analysis: blog.csdn.net/luoshengyan…
  16. [HWUI] Android application UI hardware accelerated rendering of the preload resources Atlas Service (Asset Atlas Service) analysis: blog.csdn.net/luoshengyan…
  17. [HWUI] Android application UI hardware accelerated rendering of the Display List build process analysis: blog.csdn.net/luoshengyan…
  18. [HWUI] Android application UI hardware accelerated rendering of the Display List rendering process analysis: blog.csdn.net/luoshengyan…
  19. [HWUI] Android application UI hardware accelerated rendering the animation execution process analysis: blog.csdn.net/luoshengyan…

The virtual machine

  1. ART and Dalvik: source.android.com/devices/tec…
  2. The Android 8.0 ART Improvements: source.android.com/devices/tec…
  3. Dalvik bytecode evolved: source.android.com/devices/tec…
  4. Dalvik Executable format: source.android.com/devices/tec…
  5. Dalvik Executable instruction formats: source.android.com/devices/tec…
  6. Constraints: source.android.com/devices/tec…
  7. You ART: source.android.com/devices/tec…
  8. Was Debugging ART Garbage Collection: source.android.com/devices/tec…
  9. Implementing ART Just – In – Time (JIT) Compiler: source.android.com/devices/tec…

System framework

  1. Task Snapshots: source.android.com/devices/tec…
  2. Android Input subsystem: Input process creation, to monitor the thread startup: zhuanlan.zhihu.com/p/29152319
  3. Android Input subsystem: Input events, read and distributing, InputReader, InputDispatcher: zhuanlan.zhihu.com/p/29386642
  4. EventHub interactions with the equipment, Input events: zhuanlan.zhihu.com/p/30127752
  5. Android message mechanism, from the Java layer to the Native anatomy: zhuanlan.zhihu.com/p/29929031
  6. Understanding Android Binder mechanics (1/3)
  7. Understanding Android Binder (2/3) : ++ Layer: QIANGbo. space/2017-02-12/…
  8. Understanding Android Binder (3/3) : Java Layer: QIANGbo. space/2017-03-15/…
  9. Android Bander design and implementation – design article: blog.csdn.net/universus/a…
  10. A review of the four major components: gityuan.com/2017/05/19/…
  11. Four component ActivityRecord: gityuan.com/2017/06/11/…
  12. ContentProviderRecord: gityuan.com/2017/06/04/…
  13. BroadcastRecord: gityuan.com/2017/06/03/…
  14. ServiceRecord: gityuan.com/2017/05/25/…
  15. gityuan.com/2017/04/16/…
  16. Understanding Android Context: gityuan.com/2017/04/09/…
  17. Understanding the Application creation process: gityuan.com/2017/04/02/…
  18. Take a Window view of startActivity: gityuan.com/2017/01/22/…
  19. WMS — Start Window: gityuan.com/2017/01/15/…
  20. WMS — Startup process: gityuan.com/2017/01/08/…

Process management

  1. Cpuset: www.kernel.org/doc/Documen…
  2. Cgroup: www.kernel.org/doc/Documen…
  3. Android process scheduling algorithm gityuan.com/2016/08/07/…
  4. Linux Process Management (1) gityuan.com/2017/07/30/…
  5. Linux process Management – fork gityuan.com/2017/08/05/…
  6. Pid allocation method for Linux processes gityuan.com/2017/08/06/…
  7. Get through the Linux context series: processes, threads and scheduling: edu.csdn.net/course/deta…
  8. Process management for Android: Process creation: Qiangbo.space /2016-10-10/…
  9. Process management in Android: Process Priority: qiangbo.space/2016-11-23/…
  10. Process Management in Android: Memory Reclamation: Qiangbo. space/2016-12-08/…
  11. ……………………

A debugging tool

  1. Another Android performance profiling tool – simpleperf: zhuanlan.zhihu.com/p/25277481
  2. How to debug Android Framework: Weishu. Me /2016/05/30/…
  3. How to debug Android Native Framework: Weishu. Me /2017/01/14/…
  4. Catapult : catapult.gsrc.io/README.md
  5. Taught you how to use the Systrace (a) : zhuanlan.zhihu.com/p/27331842
  6. Taught you how to use Systrace optimization: (2) – lock zhuanlan.zhihu.com/p/27535205

Hardware related

  1. Flash Wear Management in Android Automotive: source.android.com/devices/tec…
  2. Architecture (A75 and architecture A55: www.10tiao.com/html/431/20…
  3. CPU Utilization is Wrong: www.brendangregg.com/blog/2017-0…

A programming language

  1. Explore Java hidden costs: academy. Realm. IO/cn/posts / 36…

Kernel

  1. Kernel Exploration: Regmap Framework: Simplified Slow I/O interface optimization performance www.tinylab.cn/kernel-expl…
  2. Embedded Linux boot time optimization www.tinylab.cn/elinux-org-…

We had a model

  1. How hard I try: mp.weixin.qq.com/s?__biz=MzU…
  2. Since some feeling: zhuanlan.zhihu.com/zmywly8866/…
  3. How to teach Yourself Android? zhuanlan.zhihu.com/p/20708611