Android OOM错误解决方案

本文探讨了Android应用内存管理的关键问题,包括如何有效利用内存空间、避免内存泄漏,以及通过Bitmap缓存、软引用等策略来优化内存使用,以提高用户体验并预防OOM错误。同时,文章还提到了MAT工具的使用方法,以及如何通过时间换空间、完全读取本地文件等方式来解决内存问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 情境(某种行为产生的动机,目标,结果,状态)

(1)android为每个进程分配16M(或24,32,64)的内存空间,因为避免单个应用OOM错误后导致整个系统崩溃!。

  • 冲突(问题,风险)

(2)超出给定的内存空间后,会发生OOM错误。

  • 疑问(分析情境和冲突的原因,给疑问提出答案)

(3)如何确保在有效的内存中,正确的释放内存空间,防止oom错误,变得非常重要,因为这样会影响用户的体验。

  • 回答(解决方案,策略,关键行为,锚点,结论)

(4)因此,现在实施一项“android内存管理方案”确保不发生oom错误,从而提高用户体验(期望)。


可能原因:

(1)目前我们涉及到Bitmap的处理上。然而在其他方面可以也会出现OOM错误(Memory Leak),譬如:Drawable, RemoteViews, Receiver, Cursor,InputStream, MediaPlayer,JNI(C/C++)等,
针对以上问题,eclipse提供了MAT( 在这里)工具检查可能的原因(关键行为)(详细分析MAT使用: http://www.blogjava.net/rosen/archive/2010/05/21/321575.html),下面是我们的解决方案:
(1)以时间换空间,将Bitmap文件缓存本地,内存中只保留几张图片。然而有时还是会出现oom。完全隔离内存,内存中不保留图片,采取完全读取本地文件。
(2)SoftReference object-cache(在内存引用上做些处理,常用的有软引用、强化引用、弱引用)
(3)使用泛型算法或者泛型容器多多少少都会引起Memory Leak,在现代面向对象编程中似乎Memory Leak已经无法避免了,总之能自己写的算法就不要用泛型

其他解决方案

http://chiyx.iteye.com/blog/1528782

http://mzh3344258.blog.51cto.com/1823534/804237

http://www.cnblogs.com/xingmeng/archive/2012/05/23/2514354.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值