android 系统中可以在/system/build.prop中配置dalvik堆的有关设定。具体设定由如下三个属性来控制

-dalvik.vm.heapstartsize

堆分配的初始大小,调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢,

但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。

相反,这个值越大系统ram消耗越快,但是程序更流畅。

-dalvik.vm.heapgrowthlimit

受控情况下的极限堆(仅仅针对dalvik堆,不包括native堆)大小,dvm heap是可增长的,但是正常情况下

dvm heap的大小是不会超过dalvik.vm.heapgrowthlimit的值(非正常情况下面会详细说明)。这个值控制那

些受控应用的极限堆大小,如果受控的应用dvm heap size超过该值,则将引发oom(out of memory)。

-dalvik.vm.heapsize

不受控情况下的极限堆大小,这个就是堆的最大值。不管它是不是受控的。这个值会影响非受控应用的dalvik

heap size。一旦dalvik heap size超过这个值,直接引发oom。

用他们三者之间的关系做一个简单的比喻:分配dalvik heap就好像去食堂打饭,有人饭量大,要吃三碗,有人饭量小,连一碗都吃不完。如果食堂按照三碗的标准来给每个人打饭,那绝对是铺张浪费,所以食堂的策略就是先打一碗,凑合吃,不够了自己再来加,设定堆大小也是一样,先给一个合理值,凑合用,自己不够了再跟系统要。食堂毕竟是做买卖的,如果很多人明显吃不了那么多,硬是一碗接着一碗。为了制止这种不合理的现象,食堂又定了一个策略,一般人就只能吃三碗。但是如果虎背熊腰的大汉确实有需要,可以吃上五碗,超过五碗就不给了(太亏本了)。

开始给一碗 对应 dalvik.vm.heapstartsize

一般人最多吃三碗 对应 dalvik.vm.heapgrowthlimit

虎背熊腰的大汉最多能吃五碗 对应 dalvik.vm.heapsize

在android开发中,如果要使用大堆。需要在manifest中指定android:largeHeap为true。这样dvm heap最大可达dalvik.vm.heapsize。

http://blog.csdn.net/cqupt_chen/article/details/11068129

OOM&内存优化:

http://wenku.baidu.com/link?url=3l0JTY-zajEEFxAXJTcxF12XLZtQp75WRh212OUtH9B6tZlxsm4ojUR8d-m-KEhignpnkIh0Sm9Gmgf-lu0w7cVxvLPVka87yhop4Z9_7la

更多相关文章

  1. android图片透明度跟缩放大小动画事件
  2. Android 取得手机屏幕大小
  3. Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)
  4. Android系统四层架构分享
  5. Android系统分区
  6. android的文件系统结构简单介绍
  7. Android生成和内置一个系统App
  8. Mac OS X系统下android环境变量配置和真机调试
  9. [Android] 获取系统顶部状态栏(Status Bar)与底部导航栏(Navigat

随机推荐

  1. Android中Toast的常用使用方式总结
  2. android Logcat报错 CLEARTEXT communica
  3. Android中通过反射来设置Toast的显示时间
  4. Android中图片的三级缓存策略
  5. 如何在App中实现IM功能之三快速实现离线
  6. Android(安卓)11正式发布:小米、OPPO等手
  7. 从 Android(安卓)到 Java:如何从不同视角
  8. Android传感器编程入门(三)
  9. Android图片缓存分析(一)
  10. Android(安卓)studio 忽略文件不生效