android - fresco庫(kù)加載圖片出現(xiàn)OOM,求使用過的大神解決
問題描述
有沒有人使用過fresco庫(kù)加載圖片解決OOM問題的?因?yàn)槲业捻?xiàng)目需要大量加載圖片,用了fresco庫(kù)主要就是想解決GC相關(guān)OOM問題,但是發(fā)現(xiàn)項(xiàng)目在AS中使用fresco庫(kù)運(yùn)行在21安卓版本以下還是會(huì)出現(xiàn)OOM問題,運(yùn)行在21及以上的版本不會(huì)出現(xiàn)任何問題,gradle一些相關(guān)語句如下:compileSdkVersion 23buildToolsVersion ’23.0.3’minSdkVersion 15targetSdkVersion 23compile ’com.facebook.fresco:fresco:0.9.0+’報(bào)錯(cuò)圖片:
問題解答
回答1:我能推薦glide么https://github.com/bumptech/g...
回答2:用Glide吧
回答3:1、查看系統(tǒng)是否有使用大內(nèi)存的代碼或死循環(huán)。2、可以添加JVM的啟動(dòng)參數(shù)來限制使用內(nèi)存:-XX:-UseGCOverheadLimit
可以給fresco 添加屬性,改變圖片的大小
回答4:同推薦glide。代碼簡(jiǎn)單,自動(dòng)壓縮緩存圖片
在5.0(也就是API21)以下系統(tǒng),F(xiàn)resco將圖片放到一個(gè)特別的內(nèi)存區(qū)域。當(dāng)然,在圖片不顯示的時(shí)候,占用的內(nèi)存會(huì)自動(dòng)被釋放。這會(huì)使得APP更加流暢,減少因圖片內(nèi)存占用而引發(fā)的OOM。 fresco中文文檔上面寫的
而且現(xiàn)在最新的是 compile ’com.facebook.fresco:fresco:0.13.0’ 了,可以嘗試一下
回答5:首先說一下,我也是來幫頂?shù)摹?/p>
那些說用Glide的我不知道是啥心理。你哪怕說說為啥用Glide呀(雖然我一直用glide)
遇到問題應(yīng)該去解決,換庫(kù)是一種方法,但起碼要嘗試失敗后再去換。
我有個(gè)疑問,fressco為啥會(huì)oom啊?不是說業(yè)界最叼的嗎?
說下我的思路:如果樓主真把這個(gè)庫(kù)玩出oom了,我覺的還是挺厲害的,不妨排查代碼,哪里不合理。如果你覺得你都對(duì)了,不妨給github發(fā)一個(gè)issue
回答6:你這個(gè)問題我以前使用Fresco時(shí)候遇到過,當(dāng)時(shí)懷疑是Fresco本身問題,后來發(fā)現(xiàn)是自己代碼問題,一般情況下,F(xiàn)resco本身是不會(huì)觸發(fā)OOM,建議先檢查自己的代碼。
回答7:同 Glide
回答8:這個(gè)是編譯過程oom,不是運(yùn)行時(shí)oom,和使用什么庫(kù)沒有關(guān)系。編譯過程產(chǎn)生oom,需要調(diào)整編譯參數(shù),如 @wordplat 所言
android {dexOptions { javaMaxHeapSize '4g'}}回答9:
你這個(gè)其實(shí)是代碼編譯時(shí)產(chǎn)生的OOM,并不是這個(gè)框架本身產(chǎn)生的問題,所以你只需要調(diào)整JVM堆內(nèi)存的大小就可以了。
dexOptions { javaMaxHeapSize '4g'}回答10:
有些時(shí)候還是貼代碼來的方便
