標籤:android blog http ar 使用 sp strong on art
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
android dalvik heap 淺析