《深入解析Android虛擬機》Dalvik和Art基礎:讀書筆記

1.Dalvik虛擬機和普通java虛擬機的區別:

    a.dalvik虛擬機基於寄存器,java虛擬機基於棧

    b.dalvik會通過dx將所有的class打包到dex文件,普通的java虛擬機將所有的class打包到jar文件

    c.dalvik和普通java虛擬機使用的字節碼不同,即class文件的格式不同,無法互通  

2.每一個Android應用都運行在一個Dalvik以及Art虛擬機實例裏,每個虛擬機實例都是一個獨立的進程空間,每一個Android線程都依賴於獨立的linux線程。

3 .Zygote進程在系統啓動時創建,每一個Android應用的進程都是從Zygote進程fork出來的,因此可以共享Zygote進程已經加載的類,同時加快啓動速度,共享代碼空間。

4.從init.rc可以看到,zygote進程運行的可執行文件是是/system/bin/app_process,該進程會通過jni加載dalvik或者art虛擬機的so庫,因此,zygote進程可以認爲是系統啓動後的第一個虛擬機進程。

5.Art虛擬機作爲Dalvik的替代,其將dex中字節碼的優化從應用運行時提前到應用安裝時。

6. Art虛擬機完全兼容Dalvik虛擬機的字節碼,也就是可以運行dex文件中的字節碼。

發佈了87 篇原創文章 · 獲贊 16 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章