android 内存溢出(oom)产生原因和内存优化

Android应用程序因Dalvik虚拟机内存限制易发生OOM错误,常见原因包括长期占用大型资源和不恰当使用Bitmap。避免使用static保存大资源,推荐使用软引用和Application Context。内部类线程和Activity引用可能导致内存泄漏,解决方案是使用静态内部类和弱引用保存Context。
摘要由CSDN通过智能技术生成

android内存溢出的原因:

android使用基于寄存器的Dalvik虚拟机,每个android应用单独使用一个Dalvik虚拟机,每个虚拟机使用的堆内存是有限的,超过了限制就会引发oom错误。产生oom的原因大约是:1、长期保存某些大型资源的应用,资源得不到释放(比如Contextg);2、使用了多个Bitmap


容易造成oom的情况:

1、不恰当的使用static关键字。静态变量时属于类而不是对象,所以使用static保存大资源(比如Context)非常容易造成oom。

解决方案:

尽量不要使用static 变量保存大资源(比如Context等)

使用软应用

使用application Context

2、内部类线程引发oom。 线程的生命周期不可控,在线程没有完成run方法之前线程不会被销毁,同事由于采用内部类产生的线程同时用保存Activity的引用。同理使用Activity的内部类Asyncatask也容易造成oom

解决方案:

将内部类线程改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值