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è)置)