解決OOM投機(jī)取巧的方法(largeHeap)

largeHeap詳解地址

https://blog.csdn.net/eoeandroida/article/details/77000033

https://blog.csdn.net/qq_33544860/article/details/53187742


以上遇到的問題

首先OOM是什么?

當(dāng)程序需要申請(qǐng)一段“大”內(nèi)存,但是虛擬機(jī)沒有辦法及時(shí)的給到,即使做了GC操作以后

這就會(huì)拋出 OutOfMemoryException 也就是OOM

如何避免OOM?

減少內(nèi)存對(duì)象的占用

I.ArrayMap/SparseArray代替hashmap

II.避免在android里面使用Enum

III.減少bitmap的內(nèi)存占用

inSampleSize:縮放比例,在把圖片載入內(nèi)存之前,我們需要先計(jì)算出一個(gè)合適的縮放比例,避免不必要的大圖載入。

decode format:解碼格式,選擇ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差異。

IV.減少資源圖片的大小,過大的圖片可以考慮分段加載

內(nèi)存對(duì)象的重復(fù)利用

大多數(shù)對(duì)象的復(fù)用,都是利用對(duì)象池的技術(shù)。

I.listview/gridview/recycleview contentview的復(fù)用

II.inBitmap 屬性對(duì)于內(nèi)存對(duì)象的復(fù)用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8

這個(gè)方法在某些條件下非常有用,比如要加載上千張圖片的時(shí)候。

III.避免在ondraw方法里面 new對(duì)象

IV.StringBuilder 代替+

投機(jī)取巧不報(bào)錯(cuò)的方法:

android:largeHeap="true" ?可以增加內(nèi)存的申請(qǐng)量(在AndroidManifest設(shè)置)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容