oom

1.什么是oom?
当前占用的内存加上我们申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出 Out of memory 异常

我们知道每一个安卓系统都会个app分配一个独立的空间也就是我们知道的Dalvik虚拟机空间,这样每个app都可以独立的运行在自己的运行空间上,不受其他app的影响。但是我们知道Dalvik虚拟机都设置了最大内存的限制 。
大多数omm都是因为Bitmap加载有关
Bitmap :

1.图片的显示
当显示缩略图的时候不要调用网络请求

2.及时释放内存
我们知道Android有自己的垃圾回收机制也就是java的垃圾回收机制。他可以不定期的回收掉近期不使用的内存,他是不定期的你不能指定某一个时间段你调用gc回收。也就是说他肯定会回收掉Bitmap使用的这个空间。
那为什么要声明及时释放内存呢?
因为我们知道Bitmap他的构造方法都是私有的,他是通过自己的一个类来实例化这个Bitmap的。
所以说加载完Bitmap以后他是包含两个位置保存到内存中的,简单的说就是一部分是java区,一部分是C区
而这个Bitmap是由java部分分配的,最后由java的gc回收机制回收掉了,对应的C的那一部分区域是虚拟机不能被回收掉的,所以只能调用底层功能释放了,所以说我们在这里释放的内存就是C的这部分的内存。

3.图片压缩
如果我们刚开始要加载一个很大的图片,大到比系统给我们分配的都要的话,就肯定会造成内存溢出oom。

4.可以使用Bitmap的一个高级属性inBitmap
这个inBitmap这个属性可以告知Bitmap重复使用之前Bitmap占用的内存

5.捕获异常

Lru是最近最少使用的方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值