今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 JAVA heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存存在哪都不清楚,实在不太能说得过去 。
Bitmap可以说是Android/ target=_blank class=infotextkey>安卓里面最常见的内存消耗大户了,我们开发过程中遇到的oom问题很多都是由它引发的 。谷歌官方也一直在迭代它的像素内存管理策略 。从 Android 2.3.3以前的分配在native上,到2.3-7.1之间的分配在java堆上,又到8.0之后的回到native上 。几度变迁,它的回收方法也在跟着变化 。
一、Android 2.3.3以前2.3.3以前Bitmap的像素内存是分配在natvie上,而且不确定什么时候会被回收 。根据官方文档的说法我们需要手动调用Bitmap.recycle()去回收:
推荐阅读
- 容器如何使用tini作为启动进程
- 四川麻将的四川麻将文化特征
- Android logcat日志封装
- 前端开发干货:让 iframe 焕发新生开发
- java开发之Java ORM 框架推荐
- Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架
- Android开发:当前项目以Module形式引用别的项目的步骤
- 专门针对chrome谷歌浏览器而开发的一款访问插件
- 一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程
- Android恶意木马伪装成游戏APP,通过华为AppGallery分发