java虛擬機器和Dalvik虛擬機器

林堯彬發表於2020-04-04

java虛擬機器和Dalvik虛擬機器的區別:

java虛擬機器
Dalvik虛擬機器

java虛擬機器基於。 基於棧的機器必須使用指令來載入和操作棧上資料,所需指令更多更多
dalvik虛擬機器是基於暫存器

java虛擬機器執行的是java位元組碼。(java類會被編譯成一個或多個位元組碼.class檔案,打包到.jar檔案中,java虛擬機器從相應的.class檔案和.jar檔案中獲取相應的位元組碼)

Dalvik執行的是自定義的.dex位元組碼格式。(java類被編譯成.class檔案後,會通過一個dx工具將所有的.class檔案轉換成一個.dex檔案,然後dalvik虛擬機器會從其中讀取指令和資料)

常量池已被修改為只使用32位的索引,以 簡化直譯器。dalvik的堆和棧的引數可以通過-Xms和-Xmx更改

一個應用,一個虛擬機器例項,一個程式(所有android應用的執行緒都是對應一個linux執行緒,都執行在自己的沙盒中,不同的應用在不同的程式中執行。每個android dalvik應用程式都被賦予了一個獨立的linux PID(app_*))

 

QQ圖片20160420212145

轉載於:https://www.cnblogs.com/bincoding/p/5414497.html

相關文章