Android常见的内存溢出OOM

OOM即:程序向系统申请内存空间超过了系统能给的。

Android中发生OOM并不表示RAM不足,OOM的产生是因为Android为每个程序准备的虚拟机heap内存是有限的,这样是想让更多的程序能在app后台常驻,让再启动更快;但是人为的代码操作不当会导致这个内存空间占用出现异常,引发错误。


   常见的OOM的异常有:


   1.图片过大导致OOM;一般可以通过缩小图片尺寸、质量,软引用图片,使用图片框架等。需要注意的是,压缩图片的质量(设置bitmap options属性)并不能很好的避免OOM,因为bitmap在内存中的大小是以图片像素大小计算的,而这样的质量改变并不会改变像素,所以还是会导致OOM;


   2.数据库查询后cursor没有关闭,未停止查询,会导致后台一直在做数据查询工作,导致内存溢出;


   3.构造器adapter未使用contentview,即为复用,这样会导致重复部分被当做新模块重新新建和删除,导致内存溢出;


   4.广播使用后未调用UNregister解除注册,是的,广播在使用完毕后没有释放,导致内存溢出;


   5.IO数据流操作后没有及时关闭流,导致内存溢出;


   6.bitmap全局对象使用完毕后没有释放,导致内存溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值