Android Go Dalvik虚拟机内存参数heapminfree 修改

时间:2024-05-19 09:08:12

Android Go google 2017发布的一个专为入门手机设计的Android版本.

是一个简化版本的Android O(及以上)系统,能够在超低端的Android手机上流畅运行.

量化:

硬件上:512RAM1GB.(Android R不支持512M,并且强烈推荐2GB为Go版本)

软件上:轻量级的安卓系统、Google Go 系列自带应用和Google Play Store(Go版本)

第三方:lite apk

Android Go的最大特点是RAM为小内存.那么由此带来的性能问题将成为一个项目的调试的重点和难点.

本文档只谈论一个问题点:heapminfree 修改->优化可用内存

[dalvik.vm.heapgrowthlimit]: [128m]  (每个应用程序最大内存可分配到内存)

[dalvik.vm.heapmaxfree]: [8m]  (堆最大空闲内存)

[dalvik.vm.heapminfree]: [6M(堆最小空闲内存)

[dalvik.vm.heapstartsize]: [8m]  (表示应用程序启动后为其分配的初始大小)

[dalvik.vm.heaptargetutilization]: [0.75]  (堆利用率)

 

修改后参数

[dalvik.vm.heapgrowthlimit]: [128m]

[dalvik.vm.heapmaxfree]: [8m]

[dalvik.vm.heapminfree]: [512k]

[dalvik.vm.heapstartsize]: [8m]

[dalvik.vm.heaptargetutilization]: [0.75]

堆利用率heaptargetutilization、堆最小空闲内存heapminfree和堆最大空闲内存heapmaxfree这三个值的设置则对垃圾回收(GC)的某些性能有影响

 

[dalvik.vm.heapminfree]: [6M(堆最小空闲内存)

heapminfree:当应用使用内存小于3*heapminfree时,预留空闲内存设为2*heapminfree.

应用占用总内存为=使用的内存+预留空闲的内存

参数解析:multiplier=2.0heaptargetutilization=0.75有关.

堆利用率(heaptargetutilization) 最大空闲内存(heapmaxfree)和最小空闲内存(heapminfree)在代码里的变量名为:utilization,max free ,min free.

(借用网上搜索到的图片,侵权删)

Android Go Dalvik虚拟机内存参数heapminfree 修改

当应用使用内存小于3*6=18MB的时候, 预留空闲内存为2*6=12MB.target_size =使用内存+12M.

修改为[dalvik.vm.heapminfree]: [512K].

当应用使用内存小于3*0.5M=1.5MB的时候, 预留空闲内存为2*0.5M=1MB.target_size =使用内存+1M.

对预留空闲内存几乎没有限制.遵循的规则为:

预留空闲内存=使用内存*(2/3)

修改前:16M使用内存的应用占用的总内存为:6+12=18MB

修改后:16M使用内存的应用占用的总内存为:6+6*(2/3)=10MB

使用内存18MB以下的应用都会节省出内存出来.

优点:节省了RAM空间.

缺点:增加GC次数