android 调整APP内存大小

修改哪里可以使单个应用分配的内存加大呢?答案很简单,请看下图:
 

第一个是堆分配的初始值大小,这个值影响到应用的流畅性和整体ram小号。值越小,系统ram小号越慢;值越大,程序更流畅。
第二个是极限堆大小,正常情况下第三个的大小不会超过第二个的值,否则将引发oom。
第三个是使用大堆时,极限堆大小。在android开发中,如果要使用大堆,需要在manifest中制定android:largeHeap为true。这样dalvik.vm.heapsize能打到最大。
第四个是内存利用率的百分比。当实际利用率偏离这个值时。虚拟机会在GC的时候调整内存堆大小,让实际占用率向这个百分比靠拢。
剩余的是dalvik GC时使用的参数。

dalvim GC策略是:

1.在一次GC后,根据当前Heap中已分配的内存大小除以dalvik.vm.heaputilization(0.75),得到一个目标值。

2.如果目标值不在(已分配的值+dalvik.vm.heAPMinfree)到(已分配的值+dalvik.vm.heapmaxfree)这个区间,即取区间边界值做为目标值(运行一段时间后第1步得到的目标值肯定会超过这个范围)。

3.虚拟机记录这个目标值,当做当前允许总的可以分配到的内存。同时根据目标值减去固定值(200~500K),当做触发GC_CONcurrent事件的阈值。

4.当下一次分配内存,分配成功时。重新计算已分配的内存大小;若有达到GC_CONCURRENT的阈值,则产生GC。

5.当下一次分配内存,开始分配失败时。则会产生GC_FOR_ALLOC事件,释放内存;然后再尝试分配。

可以通过调整dalvik.vm.heapminfree 和dalvik.vm.heapmaxfree属性的值,减少GC_FOR_ALLOC和GC_CONCURRENT的次数,如果这两个值设置的过大,则会导致一次GC的时间过长,从而会看到明显的卡顿现象,设置的值既要使GC的次数减少,也不能是一次GC的时间过长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值