2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Java虛擬機和Dalvik虛擬機有哪些區別和不同?

更新時間:2023-07-06 來源:黑馬程序員 瀏覽量:

IT培訓班

Dalvik是Google公司自己設計的用于Android平的虛擬機,它可以簡單地完成進程隔離和線程管理,并且可以提高內存的使用效率。每一個Android應用程序在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解析下得以執行。

很多人都認為Dalvik虛擬機是一個Java虛擬機,因為Android開發的編程語言恰恰是Java語言,但是這種說法并不準確。Dalvik虛擬機并不是按照Java虛擬機的規范來實現的,兩者不兼容,而且也有很多不同之處。下面通過一個圖進行對比說明,如下所示。

Java虛擬機和Dalvik虛擬機的區別

Java 虛擬機和Dalvik虛擬機

從圖中可以看出,Java虛擬機和Dalvik虛擬機主要有兩大區別:一是它們編譯后的文件不同;二是它們基于的架構不同。具體如下:

1.編譯后的文件不同

Java 虛擬機運行的是.class字節碼文件,而 Dalvik 虛擬機運行的則是其專有的.dex文件。在Java程序中Java類會被翻譯成一個或者多個字節碼文件(.class)然后打包到.jar文件,之后Java虛擬機會從相應的.class文件和.jar文件中獲取相應的字節碼。Android程序雖然也是使用Java語言進行編程,但是在翻譯成.class文件后,還會通過工具將所有的.class文件轉換成一個.dex文件,然后Dalvik虛擬機從其中讀取指令和數據,最后的.odex是為了在運行過程中進一步提高性能而對.dex文件進行的進一步優化,能加快軟件的加載速度和開啟速度。

2.基于的架構不同

Java虛擬機是基于棧的架構,大家知道,棧是一個連續的內存空間,取出和存入的速度比較慢;而Dalvik是基于寄存器的架構,寄存器是CPU上的一塊緩存,寄存器的存取速度要比從內存中存取的速度快很多,這樣就可以根據硬件最大限度地優化設備,更適合移動設備的使用。

需要說明的是,Android系統下的Dalvik虛擬機默認給每一個應用程序最多分配16 MB內存,如果Android加載的資源超過這個值,就會報出OutOfMemoryError異常,因此一定要注意這個問題。


分享到:
在線咨詢 我要報名
和我們在線交談!