您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

Android性能優(yōu)化全方面解析

大小:0.3 MB 人氣: 2017-09-28 需要積分:1

  目的

  公司的新需求終于解決完了,離測(cè)試和發(fā)布還有段時(shí)間,第一次體驗(yàn)了下沒需求沒bug的感覺,真是舒爽,然后翻了翻有什么可以學(xué)的。無(wú)意翻到了Android后期發(fā)展的五大趨勢(shì)。一、性能優(yōu)化。二、高級(jí)UI。三、JNI/NDK開發(fā)。四、架構(gòu)師。五、RN開發(fā)。這也許將會(huì)是我的進(jìn)階趨勢(shì)。早已知道在瓶頸期的我,似乎看到了突破的希望的。初級(jí)進(jìn)階中級(jí)也好,中級(jí)進(jìn)階高級(jí)也罷,現(xiàn)在的市場(chǎng)無(wú)非是根據(jù)經(jīng)驗(yàn)規(guī)定的,根據(jù)能力的少之又少。

  其實(shí),關(guān)注我的或者在群里的小伙伴也知道,UI那塊我問題不大。但是高級(jí)UI就有難度了。我們先不管他,一個(gè)一個(gè)來。先從性能優(yōu)化來。其實(shí)我是拒絕寫這篇文章的。為什么?性能優(yōu)化的分類很多,一個(gè)分類寫一篇感覺篇幅量很小,結(jié)合在一起寫有感覺很大。而我目前打算整體的整理一下。

  那么我們先分析下性能優(yōu)化有那幾個(gè)方面:一、內(nèi)存優(yōu)化。二、UI優(yōu)化(布局優(yōu)化和繪制優(yōu)化)。三、速度的優(yōu)化(線程優(yōu)化/網(wǎng)絡(luò)優(yōu)化)。四、電量?jī)?yōu)化。五、啟動(dòng)優(yōu)化。應(yīng)該就這些了。那么這只是五大方面,里面還結(jié)合了各種細(xì)節(jié)方面的。不急,我們下面一個(gè)個(gè)地介紹。

  內(nèi)存優(yōu)化

  關(guān)于性能優(yōu)化我們可以不知道其他的,但一定要知道內(nèi)存優(yōu)化。因?yàn)閮?nèi)存泄漏可以Android的??汀D敲词裁词莾?nèi)存泄漏呢??jī)?nèi)存不在GC的掌控范圍之內(nèi)了。那么Java的GC內(nèi)存回收機(jī)制是什么?某對(duì)象不在有任何引用的時(shí)候才會(huì)進(jìn)行回收。那么GC回收機(jī)制的原理是什么?又或者說可以作為GC Root引用點(diǎn)的是啥?或許有人聽不懂我在講啥。我們先來看張圖。

  Android性能優(yōu)化全方面解析

  當(dāng)我們向上尋找,一直尋找到GC Root的時(shí)候,此對(duì)象不會(huì)進(jìn)行回收,例如,一個(gè)Activity。那么如果我們向上尋找,直到找到GC Root對(duì)象的時(shí)候,就說明它是不可以回收的,例如,我定義了一個(gè)int a;但是這個(gè)數(shù)據(jù),我整個(gè)頁(yè)面或者說整個(gè)項(xiàng)目都沒有用到,則這個(gè)對(duì)象會(huì)被GC掉。

  GC的引用點(diǎn)

  1. Java棧中引用的對(duì)象

  2. 方法靜態(tài)引用的對(duì)象

  3. 方法常量引用的對(duì)象

  4. Native中JNI引用的對(duì)象

  5. Thread——“活著的”線程

  如何判斷

  那么我們?nèi)绾闻袛嘁粋€(gè)對(duì)象是一個(gè)垃圾對(duì)象,可以講他進(jìn)行回收呢?舉了小例子教你們?nèi)绾螀^(qū)分:

  一般在學(xué)校吃飯,我們有兩種情況,第一:吃完飯就直接走人,碗筷留給阿姨來收拾處理。

  第二:吃完之后把碗筷放到收盤處直接進(jìn)行回收。

  但我們是個(gè)有素質(zhì)的人,一般采用第二種情況,但根據(jù)想法,我們更傾向于第一種。

  那么一般在飯店或者KFC中,都是第一種情況。

  那么此時(shí),問題來了,如果我已經(jīng)吃完飯,然后我并沒有離開飯店,做在位置上和朋友吹吹牛逼,談?wù)劺硐?,聊聊人生?/p>

  那么桌上那一堆碗筷是收還是不收?講道理是不能收的。雖然實(shí)際也是不能收的。因?yàn)轭櫩褪巧系踾~~

  So,我們?nèi)绾闻袛嘁粋€(gè)對(duì)象是一個(gè)可回收的垃圾對(duì)象呢?這是我們的一個(gè)主觀的判斷。但是有種情況我們是必須要考慮到的,沒錯(cuò),就是內(nèi)存過多無(wú)法釋放的時(shí)候,會(huì)直接導(dǎo)致OOM。整個(gè)項(xiàng)目boom炸了。什么鬼?outofmemory。沒錯(cuò)就是它。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?