Android 性能優(yōu)化必知必會(huì) | Android Performance

做了這么久性能相關(guān)的工作,也接觸了不少模塊,說實(shí)話要做好性能這一塊,真心不容易.為什么這么說? 是因?yàn)樾枰佑|的知識(shí)實(shí)在是太多了, Android 是一個(gè)整體,牽一發(fā)而動(dòng)全身,不是說只懂一個(gè)模塊就可以做好.

在學(xué)習(xí)的過程中,除了看源碼,我還接觸到了很多互聯(lián)網(wǎng)上已有的知識(shí),各位前輩們,將他們的知識(shí)和經(jīng)驗(yàn)傾囊相授,讓我少走了很多彎路. 我在自己的筆記里面存了很多很優(yōu)秀的技術(shù)文章和技術(shù)文檔,現(xiàn)在我決定將這些放到網(wǎng)上,讓每一個(gè)想進(jìn)入 Android 系統(tǒng)開發(fā)和優(yōu)化這個(gè)領(lǐng)域的人,能通過閱讀這篇文章,快速入門. 同時(shí)也算是我對(duì)知識(shí)的一個(gè)梳理,查漏補(bǔ)缺,終身學(xué)習(xí).

這篇文章記錄了 Android 性能優(yōu)化所必須掌握的知識(shí),涵蓋性能優(yōu)化相關(guān)的方方面面(當(dāng)然如果讀者同學(xué)你也有很棒的私藏文章,也可以加入到這篇文章里面).

優(yōu)化心得和經(jīng)驗(yàn)

  1. [系列視頻] Android Performance Patterns : www.youtube.com/playlist?li…
  2. 給 App 提速:Android 性能優(yōu)化總結(jié) : android.jobbole.com/81944/
  3. 移動(dòng)端性能監(jiān)控方案 Hertz : tech.meituan.com/hertz.html
  4. Android 性能優(yōu)化后續(xù) : androidperformance.com/2015/03/31/…
  5. Android性能優(yōu)化之虛擬機(jī)調(diào)優(yōu) : weishu.me/2016/12/23/…
  6. [譯]Android UI 性能優(yōu)化 : zhuanlan.zhihu.com/p/27065828

響應(yīng)速度

  1. Optimizing Boot Times : source.android.com/devices/tec…
  2. Android 中如何計(jì)算 App 的啟動(dòng)時(shí)間 : androidperformance.com/2015/12/31/…

流暢度

  1. Evaluating 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. 那些年我們用過的顯示性能指標(biāo) : blog.csdn.net/tencent_bug…

內(nèi)存

  1. Low RAM Configuration : source.android.com/devices/tec…
  2. Linux Swap 與 Zram 詳解 : www.tinylab.cn/linux-swap-…
  3. Android 加載不同 DPI 資源與內(nèi)存消耗間的關(guān)系 : www.tinylab.cn/android-loa…
  4. ZRAM SWAP 內(nèi)存管理講解 : nekosc.com/technology/…
  5. Android OOM 案例分析 : tech.meituan.com/oom_analysi…
  6. Android 代碼內(nèi)存優(yōu)化建議-Android 資源篇 : androidperformance.com/2015/07/20/…
  7. Android 代碼內(nèi)存優(yōu)化建議-Android 官方篇 : androidperformance.com/2015/07/20/…
  8. Android 代碼內(nèi)存優(yōu)化建議-Java 官方篇 : androidperformance.com/2015/07/20/…
  9. Android 內(nèi)存優(yōu)化之一:MAT 使用入門 : androidperformance.com/2015/04/11/…
  10. Android 內(nèi)存優(yōu)化之二:MAT 使用進(jìn)階 : androidperformance.com/2015/04/11/…
  11. Android 內(nèi)存優(yōu)化之三:打開 MAT 中的 Bitmap 原圖 : androidperformance.com/2015/04/11/…
  12. Android 代碼內(nèi)存優(yōu)化建議-OnTrimMemory 優(yōu)化 : androidperformance.com/2015/07/20/…
  13. Android LowMemoryKiller原理分析 : gityuan.com/2016/09/17/…
  14. Android 匿名共享內(nèi)存(Ashmem)原理 : juejin.cn/post/684490…

圖形棧

  1. Android 硬件加速原理與實(shí)現(xiàn)簡(jiǎn)介 :tech.meituan.com/hardware-ac…
  2. Android6.0 顯示系統(tǒng)(一) Surface 創(chuàng)建: blog.csdn.net/kc58236582/…
  3. Android6.0 顯示系統(tǒng)(二) SurfaceFlinger 創(chuàng)建 Surface :blog.csdn.net/kc58236582/…
  4. Android6.0 顯示系統(tǒng)(三) 管理圖像緩沖區(qū) : blog.csdn.net/kc58236582/…
  5. Android6.0 顯示系統(tǒng)(五) SurfaceFlinger 服務(wù) : blog.csdn.net/kc58236582/…
  6. Android6.0 顯示系統(tǒng)(六) 圖像的輸出過程 : blog.csdn.net/kc58236582/…
  7. Android6.0 SurfaceControl 分析(一)SurfaceControl創(chuàng)建&使用 Surface創(chuàng)建&使用 : blog.csdn.net/kc58236582/…
  8. Android6.0 SurfaceControl 分析(二)SurfaceControl和SurfaceFlinger通信
  9. Android6.0 VSync 信號(hào)如何到用戶進(jìn)程 : blog.csdn.net/kc58236582/…
  10. Android 圖形系統(tǒng)概述 : gityuan.com/2017/02/05/…
  11. Choreographer 原理 : gityuan.com/2017/02/25/…
  12. SurfaceFlinger 啟動(dòng)篇 : gityuan.com/2017/02/11/…
  13. SurfaceFlinger 繪圖篇 : gityuan.com/2017/02/18/…
  14. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染技術(shù)簡(jiǎn)要介紹和學(xué)習(xí)計(jì)劃 : blog.csdn.net/luoshengyan…
  15. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染環(huán)境初始化過程分析 : blog.csdn.net/luoshengyan…
  16. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染的預(yù)加載資源地圖集服務(wù)(Asset Atlas Service)分析 : blog.csdn.net/luoshengyan…
  17. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染的 Display List 構(gòu)建過程分析 : blog.csdn.net/luoshengyan…
  18. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染的 Display List 渲染過程分析 : blog.csdn.net/luoshengyan…
  19. [HWUI]Android 應(yīng)用程序 UI 硬件加速渲染的動(dòng)畫執(zhí)行過程分析 : blog.csdn.net/luoshengyan…

虛擬機(jī)

  1. ART and Dalvik : source.android.com/devices/tec…
  2. Android 8.0 ART Improvements : source.android.com/devices/tec…
  3. Dalvik bytecode : 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. Configuring ART : source.android.com/devices/tec…
  8. Debugging ART Garbage Collection : source.android.com/devices/tec…
  9. Implementing ART Just-In-Time (JIT) Compiler : source.android.com/devices/tec…

系統(tǒng)框架

  1. Task Snapshots :source.android.com/devices/tec…
  2. Android Input 子系統(tǒng):Input 進(jìn)程的創(chuàng)建,監(jiān)聽線程的啟動(dòng) : zhuanlan.zhihu.com/p/29152319
  3. Android Input 子系統(tǒng):Input 事件的產(chǎn)生卵史、讀取和分發(fā),InputReader彻亲、InputDispatcher : zhuanlan.zhihu.com/p/29386642
  4. EventHub 與設(shè)備送滞、Input 事件的交互 : zhuanlan.zhihu.com/p/30127752
  5. Android 消息機(jī)制,從Java 層到 Native 層剖析 : zhuanlan.zhihu.com/p/29929031
  6. 理解 Android Binder 機(jī)制(1/3):驅(qū)動(dòng)篇 : qiangbo.space/2017-01-15/…
  7. 理解 Android Binder 機(jī)制(2/3):C++ 層 : qiangbo.space/2017-02-12/…
  8. 理解 Android Binder 機(jī)制(3/3):Java 層 : qiangbo.space/2017-03-15/…
  9. Android Bander 設(shè)計(jì)與實(shí)現(xiàn) - 設(shè)計(jì)篇 : blog.csdn.net/universus/a…
  10. 四大組件之綜述 : gityuan.com/2017/05/19/…
  11. 四大組件之 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. 簡(jiǎn)述 Activity 與 Window 關(guān)系 : gityuan.com/2017/04/16/…
  16. 理解 Android Context : gityuan.com/2017/04/09/…
  17. 理解 Application 創(chuàng)建過程 : gityuan.com/2017/04/02/…
  18. 以 Window 視角來看 startActivity : gityuan.com/2017/01/22/…
  19. WMS—啟動(dòng)窗口(StartingWindow) : gityuan.com/2017/01/15/…
  20. WMS—啟動(dòng)過程 : gityuan.com/2017/01/08/…

進(jìn)程管理

  1. cpuset : www.kernel.org/doc/Documen…
  2. cgroup : www.kernel.org/doc/Documen…
  3. Android 進(jìn)程調(diào)度之 adj 算法 gityuan.com/2016/08/07/…
  4. Linux 進(jìn)程管理(一) gityuan.com/2017/07/30/…
  5. Linux 進(jìn)程管理(二)–fork gityuan.com/2017/08/05/…
  6. Linux 進(jìn)程 pid 分配法 gityuan.com/2017/08/06/…
  7. [收費(fèi)培訓(xùn)視頻] 打通 Linux 脈絡(luò)系列:進(jìn)程爆存、線程和調(diào)度 : edu.csdn.net/course/deta…
  8. Android 系統(tǒng)中的進(jìn)程管理:進(jìn)程的創(chuàng)建 : qiangbo.space/2016-10-10/…
  9. Android 系統(tǒng)中的進(jìn)程管理:進(jìn)程的優(yōu)先級(jí) : qiangbo.space/2016-11-23/…
  10. Android 系統(tǒng)中的進(jìn)程管理:內(nèi)存的回收 : qiangbo.space/2016-12-08/…
  11. Android 系統(tǒng)啟動(dòng):init 進(jìn)程與 init 語(yǔ)言 : qiangbo.space/2017-01-28/…

調(diào)試工具

  1. 另一個(gè) Android 性能剖析工具——simpleperf : zhuanlan.zhihu.com/p/25277481
  2. 如何調(diào)試 Android Framework : weishu.me/2016/05/30/…
  3. 如何調(diào)試 Android Native Framework : weishu.me/2017/01/14/…
  4. Catapult : catapult.gsrc.io/README.md
  5. 手把手教你使用Systrace(一): zhuanlan.zhihu.com/p/27331842
  6. 手把手教你使用Systrace(二)——鎖優(yōu)化
    : zhuanlan.zhihu.com/p/27535205

硬件相關(guān)

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

編程語(yǔ)言

  1. 探索 Java 隱藏的開銷 : academy.realm.io/cn/posts/36…

Kernel

  1. 內(nèi)核探索:Regmap 框架:簡(jiǎn)化慢速 I/O 接口優(yōu)化性能 www.tinylab.cn/kernel-expl…
  2. 嵌入式 Linux 啟動(dòng)時(shí)間優(yōu)化 www.tinylab.cn/elinux-org-…

我輩楷模

  1. 我到底有多么努力 : mp.weixin.qq.com/s?__biz=MzU…
  2. 工作以來的一些感悟 : zhuanlan.zhihu.com/zmywly8866/…
  3. 如何自學(xué)Android养距?zhuanlan.zhihu.com/p/20708611

本文轉(zhuǎn)自 https://juejin.cn/post/6844903538095554568,如有侵權(quán),請(qǐng)聯(lián)系刪除洞就。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盆繁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奖磁,更是在濱河造成了極大的恐慌改基,老刑警劉巖繁疤,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖为,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡稠腊,警方通過查閱死者的電腦和手機(jī)躁染,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來架忌,“玉大人吞彤,你說我怎么就攤上這事√痉牛” “怎么了饰恕?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)井仰。 經(jīng)常有香客問我埋嵌,道長(zhǎng),這世上最難降的妖魔是什么俱恶? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任雹嗦,我火速辦了婚禮,結(jié)果婚禮上合是,老公的妹妹穿的比我還像新娘了罪。我一直安慰自己,他們只是感情好聪全,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布泊藕。 她就那樣靜靜地躺著,像睡著了一般难礼。 火紅的嫁衣襯著肌膚如雪娃圆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天鹤竭,我揣著相機(jī)與錄音踊餐,去河邊找鬼。 笑死臀稚,一個(gè)胖子當(dāng)著我的面吹牛吝岭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼窜管,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼散劫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幕帆,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤获搏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后失乾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體常熙,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年碱茁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裸卫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纽竣,死狀恐怖墓贿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜓氨,我是刑警寧澤聋袋,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站穴吹,受9級(jí)特大地震影響幽勒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刀荒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一代嗤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缠借,春花似錦干毅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绅喉,卻和暖如春渠鸽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柴罐。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工徽缚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人革屠。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓凿试,卻偏偏與公主長(zhǎng)得像排宰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子那婉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容