首页 > 代码库 > Android对应用的内存分配
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= 70mheapgrowthlimit 是一个普通应用的内存限制 ,可以用ActivityManager.getLargeMemoryClass() 方法得到.
heapstartsize 是初始内存,应用随着使用,内存不断自动的增加,会慢慢达到上限的最大内存.
AndroidManifest.xml 的Application标签有个android:largeHeap="true" 属性,当设为true时,可以向设备申请更多内存, 默认为false.而这个就算设为true也不会无限量地分配,当达到一定的阀值依旧会报OOM错误. 因此Google官方并不推荐这个做,作为开发我们应该首先考虑的是如何降低内存或者减少内存的增量使用,而不是一味的去增加内存空间.
在开发当中,我们为了避免OOM,应该尽量的优化算法逻辑,使用官方推荐提供的方法, 比如2.3以前常用的WeakReference和SoftReference, 到现在的LruCache类等等,
优秀的应用都应该对内存有合理清晰的分配,而不是随意的去新建对象,不断打开页面也不关闭旧的页面, 或者大量的做资源缓存等等的操作.及时的释放内存,并且在缓存一些图片资源前通过类似getLargeMemoryClass()的方法去提前获知应用可用最大内存,从而合理地预设缓存大小,才能有效的避免OOM问题.
Android对应用的内存分配
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。