今天羣裏有人討論怎麼給app分配超過100M的內存,有人亮出了largeHeap參數。搜搜資料寫寫代碼,大概有些瞭解。以我的手機htc one x爲例說明一下
先看機器的內存限制,在/system/build.prop文件中:
- dalvik.vm.heapsize=128m
- dalvik.vm.heapgrowthlimit=64m
下面做實驗,不停地解碼圖片到內存,看多少會爆掉:
當largeHeap=false時:
- 04-08 17:18:50.169: E/dalvikvm(25460): Out of memory: Heap Size=60451KB, Allocated=51973KB, Limit=65536KB
當largeHeap=true時:
- 04-08 17:21:06.934: E/dalvikvm(24787): Out of memory: Heap Size=130851KB, Allocated=122377KB, Limit=65536KB
結論就是,設置largeHeap的確可以增加內存的申請量。但不是系統有多少內存就可以申請多少,而是由dalvik.vm.heapsize限制。
建議:Android官方給的建議是,作爲程序員的我們應該努力減少內存的使用,想回收和複用的方法,而不是想方設法增大內存。當內存很大的時候,每次gc的時間也會長一些,性能會下降呦。