专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
相关文章推荐
复利大王  ·  奶航空姐服务 ·  2 天前  
今天看啥  ›  专栏  ›  鸿洋

不同版本上 Bitmap 内存分配与回收对比

鸿洋  · 公众号  · android  · 2024-08-09 08:35
    

主要观点总结

Bitmap 是 Android 应用中内存占用大户,容易造成 OOM。Google 不断尝试优化 Bitmap 的内存分配和回收策略。深入理解 Bitmap 的内存模型是优化基础。文章深入 Android 6.0 和 8.0 系统源码,总结 Bitmap 运行时内存模型及 Native 内存回收策略。关键点包括 Bitmap 内存模型、不同版本分配策略、Native 内存回收兜底策略、Bitmap 创建过程、回收过程等。

关键观点总结

关键观点1: Bitmap 内存模型

Bitmap 由 Java Bitmap 对象、Native Bitmap 对象和图片像素数据三部分组成,像素数据在不同系统版本采用不同分配策略。

关键观点2: 不同版本分配策略

Android 3.0 前像素数据存 Native 堆,3.0 到 7.1 存 Java 堆,8.0 后存 Native 堆,并新增 Hardware Bitmap。

关键观点3: Native 内存回收兜底策略

Java Bitmap 对象提供 recycle() 方法释放内存,但 Native 内存需依赖 Finalizer 机制或引用机制辅助回收。

关键观点4: Bitmap 创建过程

Bitmap 创建涉及创建解码器、内存分配器、预分配像素数据内存、解码和返回 Java Bitmap 对象等步骤。

关键观点5: 回收过程

Bitmap 提供 recycle() 方法主动回收,Finalizer 机制或引用机制作为兜底策略确保 Java Bitmap 被回收时同时回收 Native 内存。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照