1. 前言緩存
本章節咱們將圍繞《支付寶 App 構建優化解析》另啓新系列,細分拆解客戶端在「代碼管理」、「證書管理」、「版本管理」、「構建打包」等維度的具體實現方案展開討論,帶領你們進一步瞭解支付寶在 App 構建模塊下的持續優化。性能優化
本節將主要記錄經過對支付寶 Android Apk 文件的從新佈局,來改善 IO 性能的過程。佈局
2. 背景性能
支付寶 App 在 Android 平臺上,因爲大量業務快速上線,Android 長尾機型等緣由,形成啓動階段及部分核心鏈路上,性能體驗不理想,進而影響用戶的使用的感覺。
從純業務角度,能夠經過優化 UI 佈局,優化代碼結構,優化 bundle 加載等方式,對性能體驗有所改善。做爲工程技術團隊,按照傳統思惟來看,彷佛沒法對性能優化作多少貢獻。通過一些方案調研後,咱們嘗試經過對編譯產物的優化,干預構建流程,以提高 App 性能。優化
3. 原理blog
佈局先後,Apk 中實際的文件並無本質改變,只有位置發生了變化。那麼爲何這樣的調整會有性能形成影響?這個原理要追溯到 Linux 的文件系統機制。進程
以下圖所示,Linux 底層文件系統中 VFS 上次 App 進程之間,存在一層 pagecache,pagecache 由內存中的物理 page 組成,其內容對應磁盤上的 block。Pagecache 的大小是動態變化的,能夠擴大,也能夠在內存不足時縮小。Cache 緩存的存儲設備被稱爲後備存儲(backing store),一個 page 一般包含多個 block,這些 block 不必定是連續的。內存