> 圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什么?怎么處理?
[Android官網介紹#管理位圖內存](https://developer.android.com/topic/performance/graphics/manage-memory) 這篇文章中講到:
- 從 Android 3.0(API 級別 11)到 Android 7.1(API 級別 25),像素數據會與關聯的位圖一起存儲在 Dalvik 堆上。
- 在 Android 8.0(API 級別 26)及更高版本中,位圖像素數據存儲在原生堆中。
所以內存塊爆的時候會在對應的堆上發生 `OutOfMemoryError` 異常導致應用程序崩潰 ,需要對內存中的 `Bitmap` 進行回收。
> `Bitmap` 如何處理大圖,如一張 `100M` 的大圖,如何預防 `OOM` ?
1. 對圖片進行壓縮處理之后進行展示,[參見下一章 Bitmap壓縮](http://www.hmoore.net/book/stven_king/stven_king_android_interview_topic/preview/Bitmap/Bitmap%E5%8E%8B%E7%BC%A9.md) 。
2. 分片(分區域進行加載),[參見下下一章 Bitmap局部解碼](http://www.hmoore.net/book/stven_king/stven_king_android_interview_topic/preview/Bitmap/Bitmap%E5%B1%80%E9%83%A8%E8%A7%A3%E7%A0%81.md)。
*****
文章到這里就全部講述完啦,若有其他需要交流的可以留言哦~!~!
想閱讀作者的更多文章,可以查看我 [個人博客](http://dandanlove.com/) 和公共號:
- 寫在前面的話
- Java
- 基礎
- Double的比較
- 小數怎么用二進制表示
- 多線程
- 并發和并行
- 線程池
- 線程池背景
- 線程池構造
- 任務阻塞隊列
- Flutter
- 基礎知識
- Dart基礎
- Android
- 項目架構
- View
- 非UI線程更新View
- AlarmManager
- 對比postDelaryed和Timer
- Bitmap
- 加載100M的圖片卻不撐爆內存
- Bitmap壓縮
- Bitmap局部解碼
- 計算圖片的內存占用
- Android動畫
- Android動畫類型
- Android動畫原理
- 屬性動畫
- 幀動畫
- 補間動畫
- 使用動畫的注意事項
- Android新特性
- 權限組
- Android23(Marshmallow)-6.0
- Android24(Nougat)-7.0
- Android26(Oreo)-8.0
- Android28(Pie)-9.0
- Android29(Q)-10.0
- AndroidX遷移
- Kotlin
- 關鍵字
- Kotlin操作符
- CoroutineScope
- Flow
- CoroutineException