问:Bitmap对象在使用完以后还需要用recycle方法来回收资源吗?
99eef81433f97da873e4a10354fb42a2.jpg
答:需要!一个Bitmap实例分为对象引用和像素数据两部分,这两部所占的内存区域是不同的。Bitmap的对象引用和其它的Java对象一样是运行在虚拟机上的,使用的内存资源也在虚拟机管控下,可以被垃圾回收机制回收。而像素数据存储的是一张图的像素点阵,这些像素数据所占用的内存资源是直接向操作系统申请的(为其分配的内存区域有可能在显存区,具体视硬件和调用参数而定),因此垃圾回收机制无法回收这部分的内存,所以需要用recycle()方法手动释放所占的内存资源。需要注意的是用recycle回收后Bitmap的对象引用仍旧存在。而且Bitmap一旦recycle后就不可再用,所以建议把释放操作放在onDestory等环节使用。
欢迎加入QQ群聊:口袋里的安卓
或关注微信公众号:口袋里的安卓
网友评论