Android_對android虛擬機器的理解,包括記憶體管理機制記憶體回收機制。dalvik和art區別

來源:互聯網
上載者:User

標籤:android   io   ar   sp   java   strong   檔案   資料   on   

虛擬機器很小,空間很小,談談行動裝置的虛擬機器的大小限制 16M ,
談談載入圖片的時候怎麼處理大圖片的,
outmemoryException
BitmapFactory.option 
記憶體回收,沒有引用的對象,在某個時刻會被系統gc掉 .

Dalvik和標準Java虛擬機器(JVM)首要差別
Dalvik 基於寄存器,而 JVM 基於棧。
基於寄存器的虛擬機器對於編譯後變大的程式來說,在它們執行的時候,花費的時間更短。
Dalvik和Java運行環境的區別
1:Dalvik主要是完成對象生命週期管理,堆棧管理,線程管理,安全和異常管理,以及記憶體回收等等重要功能。
2:Dalvik負責進程隔離和線程管理,每一個Android應用在底層都會對應一個獨立的Dalvik虛擬機器執行個體,其代碼在虛擬機器的解釋下得以執行。
3:不同於Java虛擬機器運行java位元組碼,Dalvik虛擬機器啟動並執行是其專有的檔案格式Dex
4:dex檔案格式可以減少整體檔案尺寸,提高I/o操作的類尋找速度。
5:odex是為了在運行過程中進一步提高效能,對dex檔案的進一步最佳化。
6:所有的Android應用的線程都對應一個Linux線程,虛擬機器因而可以更多的依賴作業系統的線程調度和管理機制
7:有一個特殊的虛擬機器進程Zygote,他是虛擬機器執行個體的孵化器。它在系統啟動的時候就會產生,它會完成虛擬機器的初始化,庫的載入,預製類庫和初始化的操作。如果系統需要一個新的虛擬機器執行個體,它會迅速複製自身,以最快的資料提供給系統。對於一些唯讀系統庫,所有虛擬機器執行個體都和Zygote共用一塊記憶體地區。
8:Dalvik是由Dan Bornstein編寫的,名字來源於他的祖先曾經居住過名叫Dalvík的小漁村,村子位於冰島Eyjafjörður

許多GC實現都是在對象開頭的地方留一小塊空間給GC標記用。Dalvik VM則不同,在進行GC的時候會單獨申請一塊空間,以位元影像的形式來儲存整個堆上的對象的標記,在GC結束後就釋放該空間。 
dalvik是執行的時候編譯+運行,安裝比較快,開啟應用比較慢,應用佔用空間小ART是安裝的時候就編譯好了,執行的時候直接就可以啟動並執行,安裝慢,開啟應用快,佔用空間大用個比喻來說就是,騎單車dalvik 是已經摺疊起來的單車,每次騎都要先組裝單車才能騎ART 是已經組裝好的單車,每次騎直接上車就能走人效率高在開啟的時候,運行中的速度是差不多的

Android_對android虛擬機器的理解,包括記憶體管理機制記憶體回收機制。dalvik和art區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.