BATJ30道经典常见Android 高级面试题及答案( 七 )


HTC M7实测 , 192M上限 。 512M 一般情况下 , 192M就是上限 , 但是由于某些特殊情况 , android允许使用一个更大的RAM 。

如何避免OOM

减少内存对象的占用

I.ArrayMap/SparseArray代替hashmap

II.避免在android里面使用Enum

III.减少bitmap的内存占用

  • inSampleSize:缩放比例 , 在把图片载入内存之前 , 我们需要先计算出一个合适的缩放比例 , 避免不必要的大图载入 。

  • decode format:解码格式 , 选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8 , 存在很大差异 。

IV.减少资源图片的大小 , 过大的图片可以考虑分段加载

内存对象的重复利用

大多数对象的复用 , 都是利用对象池的技术 。

I.listview/gridview/recycleview contentview的复用

推荐阅读