Java虛擬機和Dalvik虛擬機有什麼區別?DVM和JVM有什麼區別?
回答
jvm架構是基於堆棧的,而dvm架構是基於寄存器的。基於堆棧的機器對於同一任務需要比基於寄存器的機器更多的指令(即更大的指令集)。另一方面,基於寄存器的機器中的每條指令都較大。
從概念上講,DVM和JVM之間的應用程序級別 的差別很小。 體系結構上,基於寄存器的 DVM與基於堆棧的JVM之間存在主要差異 。
兩者均使用VM代碼模型。然而, DVM使用基於寄存器的操作碼,其 與基於寄存器的 字節碼指令相當,大多數目標平臺已經執行該指令。該 包括架構,如ARM和MIPS提供的那些 和 Intel,AMD和VIA Technologies的x86兼容架構。
Google開發Android並選擇DVM 有幾個原因。首先,大多數JVM都存在 許可問題。接下來, 在基於寄存器的機器上,DVM應該在 內存使用條款和性能 上更高效。當運行 DVM的多個實例時,DVM是 也應該是更有效的 。應用程序被賦予它們自己的 實例。因此,多個應用程序需要多個DVM 實例。與大多數Java 實現一樣,DVM具有一個 自動垃圾回收器。
DVM是基於註冊,其目的是在低內存運行時,使用自己的字節代碼並運行文件.DEX
JVM是一個基於堆棧它使用Java字節碼和運行。具有JIT的類文件。
Java源代碼由Java編譯器編譯爲.class文件。 然後,Android SDK的一部分dx(dexer)工具將.class文件處理爲名爲DEX的包含Dalvik字節碼的文件格式。 dx工具消除了類中存在的所有冗餘信息。 在DEX中,應用程序的所有類都被打包成一個文件。 DVM的設計使設備可以高效地運行VM的多個實例。
基於堆棧的機器必須使用指令來加載堆棧上的數據並操作數據,因此需要比註冊機器更多的指令來實現相同的高級代碼,但註冊機器中的指令必須對源寄存器和目標寄存器,因此往往更大。
我們有沒有有限的沒有可用的註冊? – roottraveller 2016-03-08 07:23:32
Jvm將基於字節碼工作,並且dvm將基於優化的字節碼工作,並針對移動平臺進行了優化,因爲移動設備具有內存低和流程低的特點,所以它使用linux內核。
當Java虛擬機開始運行一個程序,它需要內存來存儲 很多東西,包括字節碼等信息,它提取自加載的類文件 ,對象的程序實例化,參數 方法,返回值,局部變量和計算的中間結果。
Java虛擬機將執行程序 所需的內存組織到多個運行時數據區域中。
通常,基於堆棧的設備必須使用的指令來加載堆棧 上的數據,操作這些數據,並且因此,需要比 寄存器機的指令,以實現相同的高級別代碼,但在說明書 註冊機器必須對源寄存器和目標寄存器 進行編碼,因此它們往往更大。
這種差異對於VM解釋器來說非常重要,因爲操作碼 調度往往很昂貴,而其他因素與JIT編譯相關。
正在爲低內存需求進行了優化,Dalvik的有一些特殊的特徵 從其他標準的虛擬機>>>>>
區分它的VM只是瘦了使用更少的空間--- >> 的Dalvik目前沒有即時編譯器(JIT),但Android 2.0 包含一個實驗源(默認情況下禁用)。 常量池已被修改爲僅使用32位索引來簡化解釋器的 。它使用自己的字節碼,而不是Java字節碼* * *
從Android 2.2 JIT被使用,從Android 5.0(用ART取代DVM)使用AOT,然後從Android 7.0使用AOT和JIT。 – 2016-12-12 12:13:14
- 1. JVM中的 - ,-X params和-XX參數有什麼區別?
- 2. 有什麼區別`和$(Bash中有什麼區別?
- 3. 有什麼區別? :和||
- 4. &&和||有什麼區別?
- 5. 「/」和「/ *」有什麼區別?
- 6. 有什麼區別:。!和:r!?
- 7. ==和===有什麼區別?
- 8. Appender和〜有什麼區別?
- 9. $ @和$ *有什麼區別?
- 10. is和=有什麼區別?
- 11. #.00和#。##有什麼區別?
- 12. `==`和`is`有什麼區別?
- 13. '=='和'==='有什麼區別?
- 14. /和/#/有什麼區別?
- 15. | 0和~~有什麼區別?
- 16. `&`和`ref`有什麼區別?
- 17. ==和===有什麼區別?
- 18. ==和===有什麼區別?
- 19. `{}`和`[]`有什麼區別?
- 20. JavaScript和=== ===有什麼區別?
- 21. difftime和' - '有什麼區別?
- 22. =和==有什麼區別?
- 23. xtype和別名有什麼區別?
- 24. Mixpanel:識別()和people.identify()有什麼區別?
- 25. 有什麼區別
- 26. 有什麼區別
- 27. 有什麼區別?
- 28. 有什麼區別?
- 29. 有什麼區別?
- 30. 有什麼區別
爲什麼沒有任何答案被接受? – Apurva 2015-05-20 17:09:31