> 图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
[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压缩](https://www.kancloud.cn/book/stven_king/stven_king_android_interview_topic/preview/Bitmap/Bitmap%E5%8E%8B%E7%BC%A9.md) 。
2. 分片(分区域进行加载),[参见下下一章 Bitmap局部解码](https://www.kancloud.cn/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/) 和公共号:![振兴书城](https://imgconvert.csdnimg.cn/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzEzMTk4NzktNjEyYzRjNjZkNDBjZTg1NS5qcGc?x-oss-process=image/format,png)
- 写在前面的话
- 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