zoukankan      html  css  js  c++  java
  • android dalvik heap 浅析

    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

  • 相关阅读:
    wcf 配置
    一般处理程序问题重命名后问题
    jQuery取得select选择的文本与值
    C# 读取excel
    ajax 跨域问题
    java转义字符
    oracle日期时间的加减法
    在MyEclipse中,jsp文件输入中文,文件不能保存
    转自JavaEye Oracle函数大全
    转Oracle数据类型及存储方式【F】
  • 原文地址:https://www.cnblogs.com/shaweng/p/4149743.html
Copyright © 2011-2022 走看看