关于build.prop原始Dalvik虚拟机设定与调整

测试机型:三星S3 台版 1GB Ram。和魅蓝有点近。本文转自其它论坛,为什么要转呢?因为我的下一个魅蓝优化教程要用到这里面的东西。各位魅友可以先来学习下。

在system/build.prop,原始三星S3的Dalvik虚拟机设定是这样子的:

1.dalvik.vm.heapstartsize=8m(表示应用程序启动后为其分配的初始大小为8m)
这里分配的内存容量会影响到整个系统对RAM的使用程度,和第一次使用应用程序时的流畅程序。
这个值越大,系统消耗RAM则越快,但是应用程序打开后的反应也越快。
值越小,系统的RAM剩余则越多,但是程序在启动后会比较慢。

2.dalvik.vm.heapgrowthlimit=64m(每个应用程序最大内存可分配到64m)
超过就会崩溃,退出该app...我猜没错的话

3.dalvik.vm.heapsize=256m(单个虚拟机可分配的最大内存256m)
这里分配的内存容量会影响到整个系统对RAM的使用程序,和程序在运行一段时间后的反应速度。这个值越大,系统消耗RAM则越快,但是程序会运行的非常稳 定,尤其是游戏和视频程序的内容加载速度可以大幅度提升。值越小,系统的RAM剩余则越多,但是程序会很卡,尤其是游戏在切换场景Loading的时候会 花费很多的时间。若应用程序需要使用超过这个值的内存时,将会触发系统的垃圾收集器,系统和程序就会卡顿。

用上面设定的话
每开启一只app,系统就会划出8m的动态内存给该程式使用,超过的部分会再+8m
共可以+7次8m,包含一开始划出的8m,总共64m,这是单一只程式的最大动态内存使用量
超过的话,该程式就会崩溃(自动结束掉)
单个虚拟机可分配的最大内存256m,意思是可以装满64m内存的程式X4
超过的部分就会对虚拟机内的程式强制回收内存,一方面要先强制关掉一些程式,一方面要加载程式划分新的内存,这时候就会出现卡卡卡、顿顿顿

因为每个人使用习惯不同,有时爱装一堆widget(小工具)在桌面上,单单摆在桌面上也不常使用他
也许单一widget只要3-5m,如果今天一开始就划分8m内存给他,对于一个常驻不到5M的程式
,就多浪费3M的内存,一般原厂rom闲置程序+后台程序就约30个,每个都浪费约3M内存
就将近浪费90M
所以我们可以将
1.dalvik.vm.heapstartsize=8m,改为=4M后重开机
光待机其况下你就会发现使用中内存变少了,可用内存变多了,虽然你在使用桌面小工具时候
可能不会比当初还要顺,因为系统还在帮该程式划分新的内存空间,但也不至于顿

2.dalvik.vm.heapgrowthlimit=64m不用改,现在的app在前景中都吃很大内存
若改小成32m,那假设程序内存要吃到40m才会够用,该程式可能就当给你看

3..dalvik.vm.heapsize=256m(单个虚拟机可分配的最大内存256m),虽然是写单个虚拟机,但系统到底会产生多少个虚拟机...我不确定,但唯一确定是不超过实际ram的可用量
记得S3虽然是配1G RAM,但实际上看到好像是780M吧(其他好像是GPU用掉了)
780/256=3...,大概就是3个虚拟机左右(应该是这样)
想要看到更多ram的人可以将256改为128m,重开机后...你会发现可用内存又变多了...
但一样,开启新程式时候要再+128划分新的虚拟机,速度可能慢一些,但不会顿,又可节省内存的不必要浪费

以上是牺牲一些开启速度,但可以减缓被系统强制回收内存的顿挫感

小弟我第一次打这么大篇瞎掰文,各位当作参考就好不要完全相信
关于root后修改build.prop当掉、死机、变砖,请不要晚上来找我~谢谢


懒人总结 S3 台版
1.想要装很多widget小工具到桌面的,推荐
dalvik.vm.heapstartsize=5m
dalvik.vm.heapgrowthlimit=40m
dalvik.vm.heapsize=160m
也许开启程式没那么快,但比较不卡顿,且可用内存会比较多


2.只要玩游戏、桌面很干净很无聊的、不安装其他widget小工具
dalvik.vm.heapstartsize=16m
dalvik.vm.heapgrowthlimit=64m
dalvik.vm.heapsize=384m
加载大型程式或游戏比较快,缺点是可用内存会比较小


S3 LTE (I9305)默认dalvik也是跟S3一样
但是可以改成(我也是这样设定)
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=64m
dalvik.vm.heapsize=576m(1750/576=3...)可以做出3个虚拟机。
(576/8)在8M以下的程式可以有72只闲置程式
(576/64)一个虚拟机可以容纳9只多工作。

//最后附上本人魅蓝使用的参数,回帖可见。
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=80m
dalvik.vm.heapsize=320m
dalvik.vm.heaptargetutilization=0.84
dalvik.vm.heapminfree=1m
dalvik.vm.heapmaxfree=8m

最后科普下:

  dalvik.vm.heapstartsize  

 堆分配的初始大小,调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢,但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。相反,这个值越大系统ram消耗越快,但是程序更流畅。

 dalvik.vm.heapgrowthlimit       

 极限堆大小,dvm heap是可增长的,但是正常情况下dvm heap的大小是不会超过dalvik.vm.heapgrowthlimit的值。如果受控的应用dvm heap size超过该值,则将引发oom。

dalvik.vm.heapsize

使用大堆时,极限堆大小。一旦dalvik heap size超过这个值,直接引发oom。在android开发中,如果要使用大堆,需要在manifest中指定android:largeHeap为true。这样dvm heap最大可达dalvik.vm.heapsize。

[dalvik.vm.heaptargetutilization]: [0.75]   可以设定内存利用率的百分比,当实际的利用率偏离这个百分比的时候,虚拟机会在GC的时候调整堆内存大小,让实际占用率向个百分比靠拢。

上面的几个参数是与虚拟机的内存分配相关的,虚拟机的内存分配过程是下面这样的:

1 首先判断一下需要申请的size是不是过大,如果申请的size超过了堆的最大限制,则转入步骤6

2 尝试分配,如果成功则返回,失败则转入步骤3

3 判断是否gc正在进行垃圾回收,如果正在进行则等待回收完成之后,尝试分配。如果成功则返回,失败则转入步骤4

4 自己启动gc进行垃圾回收,这里gcForMalloc的参数是false。所以不会回收软引用,回收完成后尝试分配,如果成功则返回,失败则转入步骤5

5 调用dvmHeapSourceAllocAndGrow尝试分配,这个函数会扩张堆。所以heap startup的时候可以给一个比较小的初始堆,实在不够用再调用它进行扩张

6 进入回收软引用阶段,这里gcForMalloc的参数是ture,所以需要回收软引用。然后调用dvmHeapSourceAllocAndGrow尝试分配,如果失败则抛出OOM。

好了,教程到这里结束了,如果你坚持看完了,你早晚会成为大神的:D。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容