智能手機硬件加速及虛擬內存利弊分析_第1頁
智能手機硬件加速及虛擬內存利弊分析_第2頁
智能手機硬件加速及虛擬內存利弊分析_第3頁
智能手機硬件加速及虛擬內存利弊分析_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、智能手機硬件加速及虛擬內存利弊分析1. debug.sf.hw=0,修改為debug.sf.hw=1,此步驟為打開硬件加速2. dalvik.vm.heapsize=24m,修改為dalvik.vm.heapsize=32m,此步驟為修改虛擬機大小為32m上面的第二點注意,這是修改虛擬機內存,不是修改虛擬內存!這2者完全不同!最近論壇里關于修改安卓系統2個參數的帖子很火,說修改后可以提升手機的性能。修改后有說好用的,也有說不好用的,好用的把樓主捧為了神,不好用的把樓主罵個半死,其實科學嘛,總有好處有壞處的,我們只要好好分析,就能得知我們為什么要改,還有修改后可以得到什么樣的益處。捧別人為神或者

2、踩別人為泥都對事情發展沒有好處。關于修改的內容,主要是修改2個參數:debug.sf.hw=0,修改為debug.sf.hw=1,此步驟為打開硬件加速dalvik.vm.heapsize=24m,修改為dalvik.vm.heapsize=32m,此步驟為修改虛擬機大小為32m我來跟你解釋這2個參數有什么作用,并且說說為什么我做ROM的時候不修改這2個參數。1.dalvik.vm.heapsize=24m,修改為dalvik.vm.heapsize=32m,此步驟為修改虛擬機大小為32m安卓系統實際上,就是建立在linux內核上的一個JAVA系統,了解JAVA的同學應該知道,在運行JAVA程序

3、的時候,需要在每個程序上建立一個虛擬機,以獲得內存的分配,優點是假設某個程序崩潰了,系統只要關閉那個虛擬機就可以了,不會影響其他程序,缺點是很耗內存,因為你每開一個程序,就要新開一個虛擬機。舉個例子,打開程序A的時候,程序A就自動向系統申請1份虛擬機內存,然后不關閉,再開一個程序B,程序B要求向系統申請3份內存,假設虛擬機內存設置為24M,那么這2個程序合共占用了內存1X24+3X24=96M。假設虛擬機內存設置為32M,則這2個程序合共占用了內存1X32+3X32=128M那么,究竟修改好,還是不修改好呢?假設你的機子里,平常只運行一些小程序,例如QQ、看書軟件、小游戲等,那么建議你不要修改

4、,就使用標準的24M,因為足夠用,并且防止運行程序過多,而產生崩潰。那是不是越小越好呢?當然不是,因為分配給程序的內存過小,有可能因為軟件中請不到足夠的內存,而運行不流暢。假設平常經常運行大型程序,例如大型3D游戲等,則可以稍微調大一些,以使大型程序得到足夠的內存來運行,可以更流暢。那是不是越大越好呢,當然不是,因為調的太大,其他程序就分配不到內存,無法運行了。google為什么要把系統的虛擬機設置為24M呢?由于有些軟件吃內存,也有一些小軟件不吃內存,我覺得這是屬于一個中庸的設計,由于沒法全部偏向大型,也沒法全部偏向小型,那就中庸吧。我們都知道,華為C8650的機身內存RAM是256M,這是

5、固定的,給一個虛擬機用24M還是32M,自己決定吧,不過,對于某些程序控,在手機里裝一大堆需要開啟服務的軟件的筒子們,建議還是別改了,否則開機的時候需要啟動一大堆程序,最后弄得機子都開不了。我們來和常用的windows系統對比一下,假設同樣有256M內存windows系統的內存機制是:來了一個程序,程序告訴系統,我要100M,然后來了第二個程序,第二個程序說,我要150M,這個時候,內存已經被使用100M+150M=250M,剩余6M。然后來了第三個程序,第三個程序說,我要50M,由于不夠分給他,系統就崩潰了。安卓系統的內存機制是:來了一個程序,程序告訴系統,我要100M,然后來了第二個程序,

6、第二個程序說,我要150M,這個時候,內存已經被使用100M+150M=250M,剩余6M。然后來了第三個程序,第三個程序說,我要50M,這個時候系統自動關閉最先申請內存程序的虛擬機,或者最次要程序的虛擬機,他把第一個程序關閉了,系統獲得了100M的內存,加上剩余的6M,合共106M,分配給第三個程序50M,系統繼續運行。第一個是三個和尚,最后大家都沒水吃第二個是犧牲小我,完成大我。當然,系統在實際運用中,比上面復雜多了,例如安卓還加入了隱藏機制”,只要不運行的程序,都自動馬上釋放內存,windows系統出現3個程序搶內存的情況,也加入了等待機制”等,有興趣的話可以自己研究。轉載一段隔壁的論壇

7、的文章:安卓的原理不用在意內存的大小(以下全部都是轉載)不用在意剩余內存的大小。其實很多人都是把使用其他系統的習慣帶過來來了。android大多應用沒有退出的設計其實是有道理的,這和系統對進程的調度機制有關系。如果你知道java,就能更清楚這機制了。其實和java的垃圾回收機制類似,系統有一個規則來回收內存。進行內存調度有個閥值,只有低于這個值系統才會按一個列表來關閉用戶不需要的東西。當然這個值默認設置得很小,所以你會看到內存老在很少的數值徘徊。但事實上他并不影響速度。相反加快了下次啟動應用的速度。這本來就是android標榜的優勢之一,如果人為去關閉進程,沒有太大必要。特別是自動關進程的軟件

8、。到這里有人會說了,那為什么內存少的時候運行大型程序會慢呢?其實很簡單,在內存剩余不多時打開大型程序,會觸發系統自身的調進程調度策略,這是十分消耗系統資源的操作,特別是在一個程序頻繁向系統申請內存的時候。這種情況下系統并不會關閉所有打開的進程,而是選擇性關閉,頻繁的調度自然會拖慢系統。所以,論壇上有個更改內存閥值的程序可以有一定改善。但改動也可能帶來一些問題,取決于值的設定。那么,進程管理軟件有無必要呢?有的。就是在運行大型程序之前,你可以手動關閉一些進程釋放內存,可以顯著的提高運行速度。但一些小程序,完全可交由系統自己管理。談到這里,可能有的朋友會問,如果不關程序是不是會更耗電。我就說說an

9、droid后臺的原理,你就明白了。android的應用在被切換到后臺時,它其實已經被暫停了,并不會消耗cpu資源,只保留了運行狀態。所以為什么有的程序切出去重進會到主界面。但是,一個程序如果想要在后臺處理些東西,如音樂播放,它就會開啟一個服務。服務可在后臺持續運行,所以在后臺耗電的也只有帶服務的應用了。這個在進程管理軟件里能看到,標簽是service0至于廣播什么的我就不涉及了。所以沒有帶服務的應用在后臺是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟動程序時,會更快,因為不需要讀取界面資源,何必要關掉他們抹殺這個android的優點呢?還有一個。為什么android一個

10、應用看起來那么耗內存。大家知道,android上的應用是java,當然需要虛擬機,而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。以上這些設計確保了android的穩定性,正常情況下最多單個程序崩潰,但整個系統不會崩潰,也永遠沒有內存不足的提示出現。大家可能是被windows毒害得太深了,總想保留更多的內存,但實際上這并不一定會提升速度,相反卻喪失了程序啟動快的這一系統特色,很沒必要。大家不妨按我說的習慣來用用這個系統。最后推薦一款進程管理軟件,systempanel,marke

11、t上能搜到,界面友好啟動快,功能也不錯,用于手動關閉進程很好的軟件。祝大家玩機愉快,這系統開十天半個月都沒問題,不是windowso以上內容均為轉帖過來,至于為什么開了大程序或者開了好幾個程序之后切換會變慢,我的理解如下1 .大程序A已經開啟,占用70%內存,如果再想運行一個B,需要50%的內存,則就需要一個將A從內存中釋放或者壓縮的過程,所以表現出來的就是慢一會兒2 .ABCDE共占用內存80%,運行新程序Z需要20%的內存,系統內存因為沒見過剩余0的時候,也就是應該剩一部分空閑內存,那么就需要從AE這幾個程序中選擇一個或者幾個來關閉,這一過程也需要耗費系統資源,所以會慢一會兒3 .也就是說

12、你手動去殺程序的時候,就是替系統在釋放內存,就算你不殺,在需要內存的時候系統也會自動釋放。4 .不在后臺運行的程序(沒服務的),即使不殺也不會耗電。在后臺運行的(有服務的)程序,如后臺放歌,當然會耗電。5.不是說殺進程沒用,不然作者就不會推薦進程管理軟件了。哪個帶服務耗電哪個后臺一直在運行,看服務就能看出來,這樣的該殺。6,以qq舉例,正常的退,會在進程管理里留下qq的運行狀態,但不耗電不占cpu,如果你只是切換出去(按小房子而不是退出)那么自然會耗電,因為程序還在運行。第二個參數:debug.sf.hw=0,修改為debug.sf.hw=1,此步驟為打開硬件加速首先,我要說明,這個世界上沒有

13、免費的午餐,假設通過那么簡單的設置就可以提升性能,那廠商為什么不做呢?由此可知這個玩意實在效用有限,或者是需要和其他工具配合使用!這個設置的作用到現在為止還沒有一個標準的說法來說明這是用來干嘛的,開啟硬件加速?開啟什么硬件加速?難道是3D性能?難道不開啟就沒有3D性能嗎?開啟CPU某些特殊性能?這個也不靠譜啊!獲取CPU性能關鍵看指令集!而且,為什么不一開始就使用呢?開啟其他硬件性能?改了難道音箱變大聲了?改了難道30W像素的攝像頭可以照500W了?改了難道內存由256M變成512M了?要么就是讓CPU一直保持100%性能的狀態?那樣性能是提升了,但是電池效果卻下降了!(覺得這個解釋還稍微靠譜

14、一些)我個人認為,這個設置的作用,目的是開啟或者結束硬件廠商的優化指令,因為每個廠商對硬件的設置不一樣,肯定在某些位置設置了一個優化指令,并且通過這個設置來開啟。例如,google的工程設計標準里,設計了某個版本的手機設置標準是256M內存,并且告訴所有手機生產廠商:如果你是按照我的標準來制作,那么debug.sf.hw=就設置為0,如果你要自己更改部分硬件設置,那么就設置為1,但是設置為1后,你得指向一個文件,告訴系統究竟修改了一些什么了。某手機廠商為了手機速度更快,增加內存到512M,并且設置了一個文件,告訴系統,這個手機是用512M內存的,不是256M。然后某個人開始使用帶有優化指令的手機,過了一段時間,又換了新手機后,發現配置接近,但是性能卻不一樣,于是對比原來手機的文件,發現了這個指令,于是進行修改了,并且很有興致的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論