Android Performance

[Sticky] Android Performance Optimization: Must-Know Skills and Tools

Word count: 3.8kReading time: 23 min
2018/05/07
loading

This article records the essential knowledge for Android performance optimization (mainly including outstanding articles, WeChat accounts, blogs, and technical teams), covering all aspects of performance optimization. This post will be continuously updated; personal recommendations are welcome.

Having worked on performance for a long time and touched many modules, I must say that doing a good job in performance isn’t easy. Why? Because the amount of knowledge required is immense. Android is a complex system; a single change can affect everything. You can’t excel by only knowing one module.

In my learning journey, besides reading source code, I’ve encountered a wealth of knowledge online. Many seniors have shared their insights and experiences, helping me avoid many pitfalls. I’ve saved many excellent technical articles and documents in my notes. Now, I’ve decided to share them online so that anyone wishing to enter the field of Android system development and optimization can get started quickly by reading this article. It also serves as a way for me to organize my knowledge and pursue lifelong learning.

This article lists the must-know skills and tools for Android performance optimization (if you have your own favorites, feel free to suggest them). Some articles may require specific access methods. Additionally, here is the Android Developer Learning Path (2020 Edition).

This article is updated regularly. Latest update: 2022-06-27.

Optimization Experience and Insights

  1. Douyin Android Performance Optimization Series: Startup Optimization Practices
  2. Series Videos Android Performance Patterns
  3. Accelerating Apps: Android Performance Optimization Summary
  4. Hertz: A Mobile Performance Monitoring Solution
  5. Android Performance Optimization Follow-up
  6. Android VM Performance Tuning
  7. Android UI Performance Optimization
  8. Performance Tips
  9. Meituan Waimai: Android Lint Code Check Practices
  10. Android battery and memory optimizations - Google I/O 2016
  11. Google Free Public Course: Android Performance
  12. Thoughts on Android App Performance Optimization
  13. Memory Leak Analysis with Android Studio and MAT
  14. Full-link Performance Optimization of Mobile Taobao (Part 1)
  15. Full-link Performance Optimization of Mobile Taobao (Part 2)
  16. Android Development Master Course (Geek Time)
  17. Mobile QQ Android Cache Monitoring and Optimization
  18. WeChat Reading (Android) Engine Jitter Monitoring and Testing
  19. Data science for mobile OS system optimization
  20. Matrix TraceCanary: Stutter Monitoring
  21. Matrix IOCanary: I/O Quality Monitoring
  22. Polishing Google Photos Web UI
  23. WeChat Android Memory Optimization Practices
  24. Alipay Architecture: G.C. Optimization for App Launch
  25. Douyin BoostMultiDex: Reducing Cold Start Time by 80% on Low Android Versions
  26. Douyin APK Size Optimization: Resources
  27. Performance Terminator “Olympic”
  28. Meituan Java Thread Pool Implementation and Practices
  29. Probe: An Online OOM Diagnostic Component
  30. Optimization Practice: Stutter in Lists at High Refresh Rates
  31. iOS High Refresh Rate Monitoring + Optimization: A Comprehensive Analysis from Theory to Practice
  32. Large Image Monitoring via ASM
  33. Native Memory Leak in Android S Source Code
  34. Can you trust time measurements in Profiler?
  35. Observability Architecture and Key Technologies for Mobile

Responsiveness (Startup)

  1. Full Analysis of Android App Startup Process (Source Code Deep Dive)
  2. Android App Launch Optimization Record
  3. Optimizing Boot Times
  4. How to Calculate App Startup Time in Android
  5. Google Official Documentation - Launch-time performance
  6. Android Cold Start Optimization: New Tricks Beyond the Usual Three
  7. Alipay App Build Optimization: Improving Android Startup via Installation Package Rearrangement
  8. Cold Start Optimization: Exploring Redex and Interdex
  9. Android Performance Optimization Notes (1): Startup Optimization
  10. Douyin R&D: Improving App Start Speed over 15% via Binary File Rearrangement
  11. iQIYI Android Client Startup Optimization and Analysis
  12. In-depth Exploration of Android Startup Speed Optimization
  13. Douyin Android Performance Optimization Series: Startup Optimization Theory and Tools
  14. APM Page Load Time Calibration
  15. Improving App Performance with Baseline Profiles

Smoothness (Jank)

  1. Overview of Jank and Dropped Frames in Android - Methodology
  2. Overview of Jank and Dropped Frames in Android - System Side
  3. Overview of Jank and Dropped Frames in Android - App Side
  4. Analysis of Android Jank and Dropped Frames: Principles
  5. Analysis of Android Jank and Dropped Frames: Tools
  6. Analysis of Android Jank and Dropped Frames: Practice
  7. Analysis of Global Jank Caused by Accessibility Services in Yingyongbao and Xunfei Input
  8. Evaluating Performance
  9. Understanding Systrace
  10. Using ftrace
  11. Identifying Capacity-Related Jank
  12. Identifying Jitter-Related Jank
  13. Display Performance Metrics We Have Used
  14. Slow rendering
  15. Brief Analysis of Android Smoothness Detection Principles
  16. Analysis of Android JankTracker Principles
  17. Android UI Performance Tuning Handbook
  18. App Smoothness Optimization: A Tool for Quickly Identifying Time-Consuming Methods via Bytecode Instrumentation
  19. Perhaps the First Article Explaining FPS Calculation Principles
  20. Explanations of Jank and Stutter Rate
  21. Everything You Need to Know About Live Stream Stutter Optimization

Memory

  1. Douyin Android Performance Optimization Series: NativeBitmap Solution for Java OOM
  2. Saving OOM! Bytedance’s Self-developed Android VM Memory Management Optimization: mSponge
  3. Douyin Android Performance Optimization Series: Java Memory Optimization
  4. Analysis of Android Camera Memory Issues
  5. Analysis of a Massive JVM Native Memory Leak (64M Issue)
  6. Android Native | GWP-ASan: A Sampling-based Memory Debugging Tool
  7. Android Native | MTE: The Ultimate Weapon for Memory Issues
  8. Impact of Low Memory on Performance in Android
  9. Low RAM Configuration
  10. Detailed Explanation of Linux Swap and Zram
  11. Relationship Between Loading Different DPI Resources and Memory Consumption in Android
  12. Explanation of ZRAM SWAP Memory
  13. Analysis of Android OOM Cases
  14. Android Code Memory Optimization Suggestions: Resources
  15. Android Code Memory Optimization Suggestions: Google Official
  16. Android Code Memory Optimization Suggestions: Java Official
  17. Android Memory Optimization (1): Introduction to MAT
  18. Android Memory Optimization (2): Advanced MAT Usage
  19. Android Memory Optimization (3): Viewing Bitmap Images in MAT
  20. Android Code Memory Optimization Suggestions: OnTrimMemory
  21. Analysis of Android LowMemoryKiller Principles
  22. Principles of Android Anonymous Shared Memory (Ashmem)
  23. Hao Jian: Linux Memory Management Study Notes - Lecture 1
  24. Hao Jian: Linux Memory Management Study Notes - Lecture 2
  25. Hao Jian: Linux Memory Management Study Notes - Lecture 3
  26. Hao Jian: Linux Memory Management Study Notes - Lecture 4
  27. Hao Jian: Linux Memory Management Study Notes - Lecture 5
  28. Hao Jian: Linux Memory Management Study Notes - Lecture 6
  29. Manage your app’s memory
  30. Overview of memory management
  31. Summary of Checking Process Memory Consumption in Linux
  32. Tracing Native Heap Memory Leaks on the Android Platform
  33. Brief Discussion on Cache Memory
  34. Detailed Discussion on Bitmap Optimization
  35. Exploring Android Memory Optimization Methods
  36. Solve 90% of App Memory Abnormalities with This Article
  37. Practicing App Memory Optimization: Orderly Analysis and Optimization
  38. Talking About Memory Compression
  39. Principles and Applications of dumpsys meminfo
  40. Binder | Essence and Evolution of Memory Copying
  41. Memory Optimization: Texture Compression Techniques
  42. Using Perfetto to Analyze Android Native Physical Memory Leaks
  43. Using Android Profiler to Analyze Android Native Physical Memory Leaks
  44. Dynamic App Memory Detection via Android JVMTI
  45. ThreadLocal Source Code Analysis and Potential Memory Leak Issues
  46. Can Activities Be Reclaimed Even If the App Is in the Foreground?

Graphics Stack

  1. Android 12(S) Graphics System - Introduction
  2. Android 12(S) Graphics System - Basic Concepts (1)
  3. Android 12(S) Graphics System - Sample Apps (2)
  4. Android 12(S) Graphics System - Communication Between App and SurfaceFlinger (3)
  5. Android 12(S) Graphics System - SurfaceFlinger Startup and Message Queue (4)
  6. Android 12(S) Graphics System - createSurface Flow (5)
  7. Android 12(S) Graphics System - Intro to BufferQueue/BLASTBufferQueue (6)
  8. Android 12(S) Graphics System - Common Classes (7)
  9. Android Display Pipeline and Process Scheduling
  10. Detailed Explanation of Hardware Layer in Android
  11. Introduction to Hardware Acceleration Principles and Implementation in Android
  12. Overview of Android Graphics System
  13. Choreographer Principles
  14. SurfaceFlinger Startup
  15. SurfaceFlinger Drawing
  16. Brief Intro and Study Plan for Android App UI Hardware Acceleration
  17. Initialization Process of Android App UI Hardware Acceleration
  18. Asset Atlas Service in Android App UI Hardware Acceleration
  19. Display List Construction in Android App UI Hardware Acceleration
  20. Display List Rendering in Android App UI Hardware Acceleration
  21. Animation Execution in Android App UI Hardware Acceleration
  22. Android Hardware Acceleration (1): A Simple Explanation of Principles
  23. Android Hardware Acceleration (2): RenderThread and OpenGL GPU Rendering
  24. GraphicBuffer Sync Mechanism in Android: Fence
  25. Android P Graphics System (1): Hardware Compositor HWC2
  26. Android P Graphics System (2): GraphicBuffer and Gralloc Analysis
  27. Android P Graphics System (3): Android HWUI Rendering Flow
  28. Android P Graphics System (4): Android VirtualDisplay Analysis
  29. Android P Graphics System (5): Interaction Between Client and SurfaceFlinger
  30. Android P Graphics System (6): SurfaceFlinger Composition (1)
  31. Android P Graphics System (7): SurfaceFlinger Composition (2)
  32. Android P Graphics System (8): SurfaceFlinger Composition (3)
  33. Android P Graphics System (9): Overview of Android Graphics Output
  34. Android P Graphics System (10): BufferQueue (1)
  35. Android P Graphics System (11): BufferQueue (2)
  36. Android P Graphics System (12): BufferQueue (3)
  37. Rasterization in Rendering Pipeline (1)
  38. Rasterization in Rendering Pipeline (2)

Virtual Machine (ART/Dalvik)

  1. ART VM | GC Trigger Timing and Conditions
  2. ART VM | Large Object Space
  3. ART VM | Intermediate Links in JNI Calls
  4. ART VM | Finalize’s Replacement Cleaner
  5. ART VM | Making GC Synchronously Reclaim Native Memory
  6. ART VM | Memory Structure of Java Objects and Classes
  7. ART VM | Static vs. Dynamic JNI Registration
  8. ART VM | Locks
  9. ART VM | SIGSEGV Signal Handling Flow in Android Apps
  10. Third Perspective: An ART GC Optimization Story
  11. Analysis of Background App Crashes Due to GC Timeout
  12. Understanding ART in Android 10 (Part 1)
  13. Understanding ART in Android 10 (Part 2)
  14. Understanding ART in Android 10 (Part 3)
  15. Understanding ART in Android 10 (Part 4)
  16. Understanding ART in Android 10 (Part 5)
  17. ART and Dalvik
  18. Android 8.0 ART Improvements
  19. Dalvik bytecode
  20. Dalvik Executable format
  21. Dalvik Executable instruction formats
  22. Constraints
  23. Configuring ART
  24. Debugging ART Garbage Collection
  25. Implementing ART Just-In-Time (JIT) Compiler
  26. Deep Learning Android: VM & Runtime
  27. Android Performance Optimization: VM Tuning
  28. Dalvik VM on Android
  29. ART VM on Android
  30. Android ART Concurrent Copying GC
  31. Brief Analysis of Android ART dex2oat

System Framework

  1. Android Screen Display Process Analysis (1)
  2. Android Screen Display Process Analysis (2)
  3. Android Screen Display Process Analysis (3)
  4. Android Screen Display Process Analysis (4)
  5. Android Screen Display Process Analysis (5)
  6. Task Snapshots
  7. Android Input Subsystem: Creation of Input Process, Startup of Listening Thread
  8. Android Input Subsystem: Generation, Reading, and Dispatch of Input Events, InputReader, InputDispatcher
  9. EventHub and Interaction with Devices, Input Events
  10. Android Message Mechanism: Analysis from Java Layer to Native Layer
  11. Understanding Android Binder Mechanism (1/3): Driver Chapter
  12. Understanding Android Binder Mechanism (2/3): C++ Layer
  13. Understanding Android Binder Mechanism (3/3): Java Layer
  14. Android Binder Design and Implementation - Design Chapter
  15. Overview of the Four Major Components
  16. The Four Major Components: ActivityRecord
  17. The Four Major Components: ContentProviderRecord
  18. The Four Major Components: BroadcastRecord
  19. The Four Major Components: ServiceRecord
  20. Brief Introduction to the Relationship Between Activity and Window
  21. Understanding Android Context
  22. Understanding the Application Creation Process
  23. Viewing startActivity from a Window Perspective
  24. WMS—Starting Window
  25. WMS—Startup Process
  26. Analysis of Binder Principles for Android Application Engineers
  27. Binder Series—Introduction
  28. Binder Series 1—First Look at Binder Driver
  29. Binder Series 2—Second Look at Binder Driver
  30. Binder Series 3—Starting ServiceManager
  31. Binder Series 4—Getting ServiceManager
  32. Binder Series 5—Registering Service (addService)
  33. Binder Series 6—Getting Service (getService)
  34. Binder Series 7—Framework Layer Analysis
  35. Binder Series 8—How to Use Binder
  36. Binder Series 9—How to Use AIDL
  37. Binder Series 10—Summary
  38. Thorough Understanding of Android Binder Communication Architecture
  39. Binder Learning Guide
  40. Do you know Android’s MessageQueue.IdleHandler?
  41. Let’s Talk About Android’s Message Mechanism
  42. Talking About APK (Part 1) —— The Black Magic of Directly Running Dex Files
  43. Talking About APK (Part 2) —— Dex Hotfix and Classpath
  44. Talking About APK (Part 3) —— The Secret of Android Resource Compilation
  45. Lu Banshan - Reflection | Design and Implementation of Android Event Interception Mechanism
  46. Lu Banshan - The Essence and Evolution of Binder Memory Copying
  47. Lu Banshan - The Essence of inout in AIDL
  48. Lu Banshan - Binder’s Exception Mechanism
  49. Lu Banshan - Proxy Mechanism in the Binder World (Part 1)
  50. Lu Banshan - Binder Overview
  51. Lu Banshan - Binder | Object Lifecycle
  52. Lu Banshan - Binder | Proxy Object Leaks and Their Detection
  53. Android System Architecture —— Choreographer’s Working Mechanism
  54. Looper’s Wake Mechanism Upgrade
  55. Android 10.0 Binder Communication Principle (1) Binder, HwBinder, VndBinder Overview
  56. Android 10.0 Binder Communication Principle (2) - Binder Introduction
  57. Android 10.0 Binder Communication Principle (3) - ServiceManager Chapter
  58. Android 10.0 Binder Communication Principle (4) - Native-C\C++ Example Analysis
  59. Android 10.0 Binder Communication Principle (5) - Binder Driver Analysis
  60. Android 10.0 Binder Communication Principle (6) - How Binder Data Achieves Targeted Delivery
  61. Android 10.0 Binder Communication Principle (7) - Framework Binder Example
  62. Android 10.0 Binder Communication Principle (8) - Framework Layer Analysis
  63. Android 10.0 Binder Communication Principle (9) - AIDL Binder Example
  64. Android 10.0 Binder Communication Principle (10) - AIDL Principle Analysis - Proxy-Stub Design Pattern
  65. Android Framework | A New Application Startup Mechanism: USAP
  66. Android Inter-process Communication: Illustrated Explanation of Binder Mechanism Principles
  67. Android Native – Message/Handler/Looper Mechanism (Principle Chapter)
  68. Android Native – Message/Handler/Looper Mechanism (Application Chapter)
  69. Android P/Q/R/S 9/10/11/12 Multi-task Gesture Animation OtherActivityInputConsumer Situation
  70. Android Splash Screen

Stability (Crash/ANR)

  1. Android ANR|Principle Analysis and Common Cases
  2. Thorough Understanding of Android Application Not Responding Mechanism
  3. Application and System Stability Part 1 — General Routine for ANR Problem Analysis
  4. Application and System Stability Part 2 — ANR Monitoring and Information Collection
  5. Application and System Stability Part 3 — Discussion on FD Leakage Issues
  6. Application and System Stability Part 4 — Analysis of Null Pointer Issues Caused by Single Thread
  7. Application and System Stability Part 5 — Watchdog Principles and Problem Analysis
  8. Application and System Stability Part 6 — Analysis of JVM Garbage Collection finalize Execution Causing Timed Out Crash
  9. Application and System Stability Part 7 — Solving NDK Difficult Crashes in Advance with Asan
  10. Process Names and Thread Names in Android
  11. Android Runtime | Trace File Generation Mechanism
  12. Discussion | Special Handling of Main Thread for FP-based Stack Backtrace
  13. Android Resource Overflow Crash Easily Solved
  14. ByteDance Android Native Crash Governance: Memory Corruption Tool Principles and Practice
  15. Xigua Video Stability Governance System Construction 1: Tailor Principles and Practice
  16. Xigua Video Stability Governance System Construction 2: Raphael Principles and Practice
  17. Xigua Video Stability Governance System Construction 3: Sliver Principles and Practice
  18. Xigua Stutter & ANR Optimization Governance and Monitoring System Construction
  19. Toutiao ANR Optimization Practice Series - Design Principles and Influencing Factors
  20. Toutiao ANR Optimization Practice Series - Monitoring Tools and Analysis Ideas
  21. Toutiao ANR Optimization Practice Series - Case Analysis Collection
  22. Toutiao ANR Optimization Practice Series - Barrier Causing Main Thread Freeze
  23. Toutiao ANR Optimization Practice Series - Bidding Farewell to SharedPreference Waiting
  24. Automatically Intercepting 50% of Crashes: How ByteDance’s Self-developed Fastbot Helps Toutiao’s Stability Testing
  25. Online Fault - Analysis and Localization via System Logs

Power Consumption

  1. Linux Scheduler (EAS) that can perceive power consumption
  2. Android Power Consumption Improvement
  3. Video - Why is iPhone 13 Pro/Max Power Efficient? - ProMotion Technology Analysis

Process Management

  1. cpuset
  2. cgroup
  3. Android Process Scheduling: adj Algorithm
  4. Linux Process Management (1)
  5. Linux Process Management (2)–fork
  6. Linux Process PID Allocation Method
  7. Paid Training Video: Understanding the Linux Core Series: Processes, Threads, and Scheduling
  8. Android System Process Management: Process Creation
  9. Android System Process Management: Process Priority
  10. Android System Process Management: Memory Reclamation
  11. Android System Process Management: Process Scheduling
  12. Android System Startup: init Process and init Language
  13. Android Process Persistence Techniques
  14. Processes and Threads
  15. Improving Performance with Threads
  16. Interpreting Android Process Priority ADJ Algorithm
  17. Discussion on Android Thread Priority

I/O

  1. Android Performance Optimization: I/O Monitoring and Optimization
  2. Understanding File Read/Write Process from Kernel Filesystem Perspective
  3. In-depth Analysis of mmap: What it is, Why it’s used, How to use it
  4. Android IO Monitoring | Performance Monitoring Series

Debugging Tools

  1. Another Android Performance Profiling Tool - simpleperf
  2. Simpleperf
  3. How to Debug Android Framework
  4. How to Debug Android Native Framework
  5. Catapult Project
  6. Hands-on Guide to Using Systrace (Part 1)
  7. Hands-on Guide to Using Systrace (Part 2) - Lock Optimization
  8. Memory Leak Analysis with Android Studio and MAT
  9. Introduction to Systrace
  10. Systrace Basics - Systrace Prerequisites
  11. Systrace Basics - Why 60 fps ?
  12. Systrace Basics - SystemServer Interpretation
  13. Systrace Basics - Input Interpretation
  14. Systrace Basics - Vsync Generation and Working Mechanism Interpretation
  15. Systrace Basics - Vsync-App: Detailed Explanation of Choreographer-based Rendering Mechanism
  16. Systrace Basics - MainThread and RenderThread Interpretation
  17. Systrace Basics - Binder and Lock Contention Interpretation
  18. Systrace Basics - Triple Buffer Interpretation
  19. Systrace Basics - CPU Info Interpretation
  20. Systrace Smoothness Practice 1: Understanding Jank Principles
  21. Systrace Smoothness Practice 2: Case Study: MIUI Desktop Scrolling Jank Analysis
  22. Systrace Smoothness Practice 3: Some Questions During Jank Analysis
  23. Systrace Responsiveness Practice 1: Understanding Responsiveness Principles
  24. Systrace Responsiveness Practice 2: Responsiveness Practice Analysis - Taking Startup Speed as an Example
  25. Systrace Responsiveness Practice 3: Extended Knowledge of Responsiveness
  26. Systrace Thread CPU Run State Analysis Techniques - Runnable Chapter
  27. Systrace Thread CPU Run State Analysis Techniques - Running Chapter
  28. Systrace Thread CPU Run State Analysis Techniques - Sleep and Uninterruptible Sleep Chapter
  29. Tracing Window Transitions
  30. Android Performance Problem Analysis - bugreport
  31. Tencent APM Framework Matrix Source Code Reading - Gradle Plugin
  32. Tencent APM Framework Matrix Source Code Reading - TracePlugin Architecture Analysis
  33. Tencent APM Framework Matrix Source Code Reading - TracePlugin’s AnrTracer
  34. Tencent APM Framework Matrix Source Code Reading - TracePlugin’s StartupTracer
  35. Tencent APM Framework Matrix Source Code Reading - TracePlugin’s FrameTracer
  36. Tencent APM Framework Matrix Source Code Reading - Architecture Analysis
  37. PerfettoViewer
  38. Android Performance Analysis Tools Introduction | Developer Talk · DTalk

Hardware Related

  1. Flash Wear Management in Android Automotive
  2. Cortex-A75 and Cortex-A55
  3. CPU Utilization is Wrong

Programming Languages

  1. Exploring Hidden Costs of Java
  2. Kotlin Chinese Documentation
  3. Java Polymorphism Implementation in Android
  4. Cancellation and Exceptions in Coroutines
    1. Coroutines: First things first
    2. Cancellation in coroutines
    3. Exceptions in Coroutines
    4. Coroutines & Patterns for work that shouldn’t be cancelled
  5. Thorough Understanding of References in Android and Java
  6. Coroutines, Context, and Scopes in Kotlin
  7. In-depth Understanding of Continuation Principle in Coroutines
  8. Android Architecture Pattern
  9. High performance with idiomatic Kotlin

Linux

  1. Kernel Exploration: Regmap Framework: Simplifying Slow I/O Interface Optimization for Performance
  2. Embedded Linux Boot Time Optimization
  3. Scenario Analysis of Linux Filesystem Read-ahead
  4. Using blktrace to Count Disk Block I/O Access Frequency
  5. Linux System Call (syscall) Principle
  6. Qian Mo: Talking About Linux IO (Part 1)
  7. Qian Mo: Talking About Linux IO (Part 2) - IO Stack in Linux Kernel
  8. Qian Mo: Talking About Linux IO (Part 3)
  9. Guo Jian: Deadline Scheduler (Part 1): Principles
  10. Guo Jian: Deadline Scheduler (Part 2): Details and Usage
  11. Guo Jian: Linux Memory Model - Flat, Non-contiguous, and Sparse
  12. Linux Kernel Analysis - CFS (Completely Fair Scheduler)
  13. Understanding CFS Scheduler from a Few Questions
  14. CFS Scheduler (1) - Basic Principles
  15. CFS Scheduler (2) - Source Code Analysis
  16. CFS Scheduler (3) - Group Scheduling
  17. CFS Scheduler (4) - PELT (per entity load tracking)
  18. CFS Scheduler (5) - Bandwidth Control
  19. CFS Scheduler (6) - Summary
  20. Brief Knowledge About Threads and I/O Models
  21. TRIM: Improving Disk Performance, Alleviating Android Jank
  22. LWN 456904: Avoiding Disk Writeback, Throttling Page Cache Writes
  23. LWN 384093: Discussion on “Writeback” Issues
  24. LWN 211505: Avoiding and Solving Memory Fragmentation
  25. SMP Primer for Android
  26. Memory Allocation 1 - Free List and Memory Pool
  27. Memory Allocation 2 - Buddy System Principles
  28. Memory Allocation 3 - Buddy System Implementation in Linux
  29. Memory Compression in Linux
  30. The Fun of Studying Linux Kernel
  31. Linux IO Block Layer Analysis
  32. CFS Task Load Balancing (Framework Chapter)
  33. Understanding Memory Defragmentation with One Diagram
  34. Brief Talk on New Non-Volatile Memory
  35. Linux devfreq framework Analysis
  36. Memory Leak (Growth) Flame Graph
  37. Linux System Performance Benchmarking System Configuration and Principles
  38. Cgroups and Systemd
  39. Devfreq Bus Dcvs
  40. Development of a Small Tool for Accurate CPU Utilization Calculation Based on eBPF
  41. Some Superficial Understandings of eBPF
  42. Analyzing Function Performance with ftrace
  43. What is eBPF? Why is it Important for Observability

Flutter

  1. In-depth High-Performance Graphics Rendering in Flutter
  2. Cross-platform Technology Evolution and Flutter’s Future
  3. Cross-platform Technology Trends and ByteDance Flutter Architecture Practice
  4. Flutter Performance Testing and Theory
  5. In-depth Understanding of Flutter Multi-threading
  6. In-depth Understanding of Flutter Engine Startup
  7. Flutter Rendering Mechanism - UI Thread
  8. Flutter Rendering Mechanism - GPU Thread
  9. In-depth Exploration of Flutter Performance Optimization

Fuchsia

  1. Dr. Xu Zhongxing’s Speech: Introduction to Fuchsia OS

Beyond Technology

  1. How to Start Learning in a New Area
  2. How Hard Do I Work
  3. Some Insights Since Starting Work
  4. How to Self-Learn Android?
  5. What is the Most Important Ability for a Technologist?
  6. Brief Talk on Software Engineer’s Code Literacy
  7. Lu Qi: Besides Good Code, How Else Can Engineers Be Excellent?
  8. Don’t “Wall” Yourself
  9. How to Become a 100% Successful Offer Harvester?
  10. Independent Thinking Using Simple Logical Methods
  11. Underlying Internal Skills Developed This Year
  12. 084 Create Your Own Field, Steve Jobs’ Life Rules, Voice and Exit, Benefits of Insomnia
  13. I Mastered How to Watch English Technical Videos Without Barriers
  14. Video - Tal Ben-Shahar “Positive Leadership”
  15. Why did I choose to be an Android developer, not an IOS developer ?
  16. Should Technical Leads Stop Writing Code?
  17. How I Went from “Mute English” to Barrier-Free English Work Communication
  18. English: Lou Wu - Real Methods and Misconceptions in English Learning
  19. Tearing Down the Wall of Knowledge
  20. 5000 Words Detailed Explanation of Performance Requirements

Interview Questions

  1. Android 2018 Latest Interview Questions
  2. How to Measure the Ability of an Android App Developer
  3. 2018 Android Interview Summary
  4. Android 2017-2018 Latest Interview Questions (3-5 Years Experience Personal Interview Experience)
  5. Android Development Engineer Interview Guide
  6. Alibaba Phone Interview Questions Summary, with Answers!
  7. Alibaba Interview Questions
  8. Meituan Interview Questions
  9. Wandoujia Three Interview Questions
  10. Qingting FM Interview Questions
  11. Sina Weibo Interview Questions
  12. NetEase Hangzhou R&D Interview Questions
  13. Why do you want to work for our company? - Common Interview Questions Analysis
  14. Today’s Toutiao Senior Interviewer Interviewed 2000 People in Ten Years, Summarized These 5 Points
  15. 2019 Meituan-Dianping Senior Android Development Winter Job Hopping Salary Increase Experience Sharing
  16. How to Answer Performance Optimization Questions to Impress Alibaba Interviewers?
  17. 2019.07 Android Interview Real Questions Collection
  18. How do Interviewers Evaluate Candidates in Technical Interviews?
  19. Text Version of a Sharing Session for HenCoder Plus Students
  20. Kuaishou, ByteDance, Baidu, Meituan Offer Journey
  21. Interview Musings in the US
  22. Interview Thoughts

Open Source Libraries

  1. Douyin Android Performance Optimization Series: Rhea, a New Generation All-round Performance Analysis Tool
  2. Raphael: An Android Native Memory Leak Detection Tool
  3. Tailor: A Universal Memory Snapshot Minimizer for Android
  4. xHook
  5. xDL Link
  6. Android-Inline-Hook Link
  7. And64InlineHook Link
  8. malloc debug Link
  9. LeakTracer Link
  10. Nanoscope
  11. Profilo
  12. Lottie Android 5.0

Technical Weeklies

  1. Kotlin Weekly
  2. Android Weekly
  3. Android Weekly - CN
  4. onCreate Digest
  5. 软件测试周刊
  6. CodeDump 的网络日志
  7. 体验碎周报

Technical Teams and Individuals

WeChat Official Accounts

Other Links

Since the blog comment section is difficult to use, you can go to the Zhihu or Juejin pages of this article for likes or discussions:
Zhihu - Android Performance Optimization: Must-Know Skills and Tools
Juejin - Android Performance Optimization: Must-Know Skills and Tools

About Me && Blog

Below is my personal intro and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”

  1. Blogger Intro
  2. Blog Content Navigation: A guide for my blog content.
  3. Curated Excellent Blog Articles - Android Performance Optimization Must-Knows
  4. Android Performance Optimization Knowledge Planet

One walks faster alone, but a group walks further together.

Scan WeChat QR Code

CATALOG
  1. 1. Optimization Experience and Insights
  2. 2. Responsiveness (Startup)
  3. 3. Smoothness (Jank)
  4. 4. Memory
  5. 5. Graphics Stack
  6. 6. Virtual Machine (ART/Dalvik)
  7. 7. System Framework
  8. 8. Stability (Crash/ANR)
  9. 9. Power Consumption
  10. 10. Process Management
  11. 11. I/O
  12. 12. Debugging Tools
  13. 13. Hardware Related
  14. 14. Programming Languages
  15. 15. Linux
  16. 16. Flutter
  17. 17. Fuchsia
  18. 18. Beyond Technology
  19. 19. Interview Questions
  20. 20. Open Source Libraries
  21. 21. Technical Weeklies
  22. 22. Technical Teams and Individuals
  23. 23. WeChat Official Accounts
  24. 24. Other Links
  25. 25. About Me && Blog