Android对应用的内存分配

在Android运行机制里面, 不同分辨率不同RAM大小的设备会被分配不同的初始运行内存.更高分辨率的设备也肯定比更低分辨率设备需要更多的内存.具体分配多少,这个可以查看自己设备当中/system/build.prop 文件,里面有说明.(以下是我的测试设备 LG 720P分辨率 4.7英寸的手机的信息)

<span style="white-space:pre">	</span>dalvik.vm.heapstartsize = 8m
        dalvik.vm.heapsize = 256m  
        dalvik.vm.heapgrowthlimit= 70m  
heapgrowthlimit 是一个普通应用的内存限制 ,可以 用ActivityManager.getLargeMemoryClass() 方法得到.

heapstartsize 是初始内存,应用随着使用,内存不断自动的增加,会慢慢达到上限的最大内存.

AndroidManifest.xml 的Application标签有个android:largeHeap="true" 属性,当设为true时,可以向设备申请更多内存, 默认为false.而这个就算设为true也不会无限量地分配,当达到一定的阀值依旧会报OOM错误. 因此Google官方并不推荐这个做,作为开发我们应该首先考虑的是如何降低内存或者减少内存的增量使用,而不是一味的去增加内存空间.

在开发当中,我们为了避免OOM,应该尽量的优化算法逻辑,使用官方推荐提供的方法, 比如2.3以前常用的WeakReference和SoftReference, 到现在的LruCache类等等,

优秀的应用都应该对内存有合理清晰的分配,而不是随意的去新建对象,不断打开页面也不关闭旧的页面, 或者大量的做资源缓存等等的操作.及时的释放内存,并且在缓存一些图片资源前通过类似getLargeMemoryClass()的方法去提前获知应用可用最大内存,从而合理地预设缓存大小,才能有效的避免OOM问题.



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值