Android4.0 输出分辨率改为1280*720后,出现Out of Memory

本文探讨了Android应用中遇到的Out of Memory问题,重点在于Dalvik虚拟机的内存管理和 Dex文件格式。文章指出,Android应用默认最大内存为16MB,可通过修改代码或配置文件增加内存限制。此外,还提到了Bitmap内存分配问题以及在不同DPI设备上加载图片的注意事项,提供了解决贴图加载错误的解决方案。
摘要由CSDN通过智能技术生成
1、出现这个问题的原因是由于Bitmap decode 引发的,我们知道,android程序内存一般限制在16M,当然也有24M的,而android程序内存被分为2部分:native和dalvik:dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是native+dalvik不能超过最大限制。

用以下命令可以查看程序的内存使用情况:

dumpsys meminfo 程序的包名或者进程id
 多数时候,发生OOM 都是在做一些跟图片相关的操作,以下提出一些建议尽量可以减少这种情况的发生:
decode bitmap 的时候,尽量配置下Options,例如:inSameSize
Bitmap使用完以后,调用 bitmap.recycle()来释放内存
如果应用是基于图片的应用,尽量采用LazyLoad和DymanicRecycle

decode bitmap 的时候,将decode代码 try catch 出来,catch oom error,避免程序crash,可以在catch里面做一些释放内存操作


2、关于Android的Native内存和Dalvik内存

1)、Dalvik内存:

每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。但是这种说法并不准确,因为 Dalvi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒江蓑笠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值