關于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閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容