前言
性能優化仿佛成了每個程式員開發的必經之路,要想出人頭地,與眾不同,你還真需要下點功夫去研究Android的性能優化,比如說,從優化應用啟動、UI加載、再到記憶體、CPU、GPU、IO、還有耗電等等,當你展開一個方面做優化的時候,是不是也曾跟我一樣,一頭霧水,摸不著頭腦,甚至找不到方法,然后看了大量的文章,最后記住了一些別人消化過的方式方法,就覺得自己學會了,其實我現在并不這么認為,我覺得性能優化肯定有一個固定的思維框架,讓我們自發的去發現問題,然后解決問題,只有做到了自己發現,這樣我們才能跟別人不一樣,才能真正的掌握性能優化不是嗎?下面就跟我一起看清楚性能優化的底層邏輯,
來看下Android系統架構

還記得這張圖嗎?記得當年初學android第一節課,老師就拿了這張圖,甚至說,到目前為止,我才能更深刻的理解這張圖,下面由我來重新介紹這張圖,也許會給你帶來不一樣的視角,你有沒有發現,其實整個Android系統只分為兩大塊,Linux + Android 虛擬機,其他的部分不都是運行在這個上面的產物嗎?(當然有些人會說,虛擬機不也是運行在linux的產物嗎?答:是的,)如果你沒明白,請允許我畫個圖,你也許就能明白我說的,請看:

程式A、B都運行在虛擬機中,而Java需要跟Native互動需要用到JNI,JNI和C和C++進行互相呼叫,最終C與Linux內核進行互動, 通過上圖,如果讓你抓重點的話,其實就兩大模塊對吧,一個是linux,一個是Android虛擬機,回到優化,那是不是說我們只需要做好兩件事,一個是優化linux,一個是優化虛擬機呢?但其實我想告訴你,性能優化最終其實就一件事,基于 Linux對Android的運行時優化,這就是我們找到的最基礎的底層邏輯,
底層邏輯下的本質
讓我們基于Linux對Android運行時的優化,太抽象了,如果讓你具體一點,你會想到什么?
硬體角度
先從硬體的角度出發,不管是Linux還是Android運行時,其實最終都牽扯到硬體資源的使用,那是不是說,如何做到硬體資源的合理運用,就是我們要做的呢?我覺得沒錯,首先你要知道硬體資源中最主要的資源是計算資源和存盤資源,
- 計算資源主要是CPU、GPU,比如我們會考慮CPU占用率來作為優化的標準
- 存盤資源主要是虛擬記憶體和物理記憶體(磁盤),比如我們會考慮記憶體占用,磁盤占用等
簡單說下如何利用好呢?
- 比如現在的CPU都是多核的,能利用好多核計算,不是單核
- 比如運行記憶體12G,那我們是不是可以考慮犧牲一些記憶體在提高性能呢?對的你是不是想說Google Chrome能占7、8個G記憶體?哈哈,因為Google比較喜歡拿空間資源換性能,
簡單總結方法:
- 合理利用CPU資源
- 合理管理記憶體資源
至于再細化到如何做,這個就需要你自己去摸索了,
軟體角度
從軟體角度出發,其實就是我們開發的應用軟體,作業系統除了計算資源和記憶體資源的管理,其他都是通過IO來管理,那么軟體的本質其實就是IO,進和出,沒錯,舉幾個例子:如我們的軟體在系統中是一個個的行程,創建/銷毀,在行程中有一個個的執行緒,創建/銷毀,在執行緒中有一個個的物件,創建/銷毀,在一個物件中有一個個方法,創建/銷毀,在方法中有一個個成員變數和區域變數,創建/銷毀,你現在是不是已經找到優化的方向了,總結如下:
- 優化行程
- 優化執行緒
- 優化物件
- 優化方法
- 優化變數
這才是我們要找的底層邏輯不是嗎?任何問題的解決,我想都該有一個合理的思維框架,這樣才能事半功倍,有跡可循,
最后分享一下,小編自己在學習提升時,順帶從網上收集整理了一些 Android 開發相關的學習檔案、面試題、Android 核心筆記等等檔案,希望能幫助到大家學習提升,如有需要參考的可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3訪問查閱,


轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/292764.html
標籤:其他
