Android Go 是google 2017发布的一个专为入门手机设计的Android版本.
是一个简化版本的Android O(及以上)系统,能够在超低端的Android手机上流畅运行.
量化:
硬件上:512RAM至1GB.(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.0和heaptargetutilization=0.75有关.
堆利用率(heaptargetutilization) 最大空闲内存(heapmaxfree)和最小空闲内存(heapminfree)在代码里的变量名为:utilization,max free ,min free.
(借用网上搜索到的图片,侵权删)
当应用使用内存小于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次数