android 调整APP内存大小

您所在的位置:网站首页 如何设置手机虚拟内存大小 android 调整APP内存大小

android 调整APP内存大小

2024-07-15 13:10| 来源: 网络整理| 查看: 265

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

第一个是堆分配的初始值大小,这个值影响到应用的流畅性和整体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的时间过长。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3