成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

都是虛擬機(jī),DVM與JVM的區(qū)別在哪兒?

開發(fā) 開發(fā)工具
Dalvik虛擬機(jī)(DVM)存在于Android系統(tǒng),JVM是Java虛擬機(jī),兩者都是虛擬機(jī),它們之間有什么區(qū)別呢?

Dalvik虛擬機(jī)(DVM)存在于Android系統(tǒng),JVM是Java虛擬機(jī),兩者都是虛擬機(jī),它們之間有什么區(qū)別呢?

Dalvik虛擬機(jī)是Google等廠商合作開發(fā)的Android移動(dòng)設(shè)備平臺(tái)的核心組成部分之一。它可以支持已轉(zhuǎn)換為.dex(即Dalvik Executable)格式的Java應(yīng)用程序的運(yùn)行,.dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。(dx 是一套工具,可以將 Java .class 轉(zhuǎn)換成 .dex 格式. 一個(gè)dex檔通常會(huì)有多個(gè).class。由于dex有時(shí)必須進(jìn)行***化,會(huì)使檔案大小增加1-4倍,以O(shè)DEX結(jié)尾。)

1. Dalvik 和標(biāo)準(zhǔn) Java 虛擬機(jī)(JVM)的首要差別

Dalvik 基于寄存器,而 JVM 基于棧。基于寄存器的虛擬機(jī)對(duì)于更大的程序來說,在它們編譯的時(shí)候,花費(fèi)的時(shí)間更短。 JVM字節(jié)碼中,局部變量會(huì)被放入局部變量表中,繼而被壓入堆棧供操作碼進(jìn)行運(yùn)算,當(dāng)然JVM也可以只使用堆棧而不顯式地將局部變量存入變量表中。Dalvik字節(jié)碼中,局部變量會(huì)被賦給65536個(gè)可用的寄存器中的任何一個(gè),Dalvik指令直接操作這些寄存器,而不是訪問堆棧中的元素。

2. Dalvik 和 Java 字節(jié)碼的區(qū)別

VM字節(jié)碼由.class文件組成,每個(gè)文件一個(gè)class。JVM在運(yùn)行的時(shí)候?yàn)槊恳粋€(gè)類裝載字節(jié)碼。相反的,Dalvik程序只包含一個(gè).dex文件,這個(gè)文件包含了程序中所有的類。Java編譯器創(chuàng)建了JVM字節(jié)碼之后,Dalvik的dx編譯器刪除.class文件,重新把它們編譯成Dalvik字節(jié)碼,然后把它們寫進(jìn)一個(gè).dex文件中。這個(gè)過程包括翻譯、重構(gòu)、解釋程序的基本元素(常量池、類定義、數(shù)據(jù)段)。常量池描述了所有的常量,包括引用、方法名、數(shù)值常量等。類定義包括了訪問標(biāo)志、類名等基本信息。數(shù)據(jù)段中包含各種被VM執(zhí)行的函數(shù)代碼以及類和函數(shù)的相關(guān)信息(例如DVM所需要的寄存器數(shù)量、局部變量表、操作數(shù)堆棧大小),還有實(shí)例變量。

Dalvik 和 Java 字節(jié)碼的區(qū)別

3. Dalvik 和 Java SDK的SDK不同

4. Dalvik 和 Java 運(yùn)行環(huán)境的區(qū)別

Dalvik 經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik 應(yīng)用作為一個(gè)獨(dú)立的Linux 進(jìn)程執(zhí)行。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。

Dalvik虛擬機(jī)在Android2.2之后使用JIT (Just-In-Time)技術(shù),與傳統(tǒng)JVM的JIT并不完全相同。

Dalvik虛擬機(jī)有自己的 bytecode,并非使用 Java bytecode。

其他幾點(diǎn)不同

1. Dalvik主要是完成對(duì)象生命周期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。

2. Dalvik負(fù)責(zé)進(jìn)程隔離和線程管理,每一個(gè)Android應(yīng)用在底層都會(huì)對(duì)應(yīng)一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例,其代碼在虛擬機(jī)的解釋下得以執(zhí)行。

3. 不同于Java虛擬機(jī)運(yùn)行java字節(jié)碼,Dalvik虛擬機(jī)運(yùn)行的是其專有的文件格式dex。

4. dex文件格式可以減少整體文件尺寸,提高I/O操作的類查找速度。

5. odex是為了在運(yùn)行過程中進(jìn)一步提高性能,對(duì)dex文件的進(jìn)一步優(yōu)化。

6. 所有的Android應(yīng)用的線程都對(duì)應(yīng)一個(gè)Linux線程,虛擬機(jī)因而可以更多的依賴操作系統(tǒng)的線程調(diào)度和管理機(jī)制。

7. 有一個(gè)特殊的虛擬機(jī)進(jìn)程Zygote,他是虛擬機(jī)實(shí)例的孵化器。它在系統(tǒng)啟動(dòng)的時(shí)候就會(huì)產(chǎn)生,它會(huì)完成虛擬機(jī)的初始化、庫的加載、預(yù)制類庫和初始化的操作。如果系統(tǒng)需要一個(gè)新的虛擬機(jī)實(shí)例,它會(huì)迅速復(fù)制自身,以最快的速度提供給系統(tǒng)。對(duì)于一些只讀的系統(tǒng)庫,所有虛擬機(jī)實(shí)例都和Zygote共享一塊內(nèi)存區(qū)域。

【本文為51CTO專欄作者“朱國立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)“開發(fā)者圓桌”獲取聯(lián)系和授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2010-09-25 15:13:40

JVMJava虛擬機(jī)

2011-12-12 13:09:45

云計(jì)算

2024-01-08 19:03:15

交換機(jī)網(wǎng)絡(luò)光模塊

2015-08-27 13:45:25

2023-09-12 11:38:18

2019-07-23 16:00:36

區(qū)塊鏈存儲(chǔ)5G

2011-06-22 13:35:55

JVM

2022-02-25 10:03:11

對(duì)象數(shù)據(jù)算法

2020-09-24 09:53:48

WebhooksAPI數(shù)據(jù)

2010-09-17 15:12:57

JVMJava虛擬機(jī)

2013-12-04 09:33:15

軟件成本

2010-09-25 16:12:45

JVM虛擬機(jī)

2014-04-17 10:16:50

2012-01-13 13:51:21

云計(jì)算

2012-01-12 09:30:26

虛擬化云計(jì)算Web應(yīng)用

2020-05-08 16:55:48

Java虛擬機(jī)JVM

2023-06-03 00:04:10

容器虛擬機(jī)VM

2012-10-08 10:07:23

2012-10-08 09:59:18

2021-07-30 07:22:51

JVM虛擬機(jī)棧 Stack
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99这里只有精品视频 | 日韩午夜一区二区三区 | 在线中文av| 国产中文一区二区三区 | 日韩亚洲视频在线 | 国产精品片aa在线观看 | 亚洲国产成人精品久久久国产成人一区 | 亚洲国产成人精品女人 | www.99re| 69xxx免费| 国产 日韩 欧美 在线 | 一级黄a| 久久久网 | 99福利视频 | 爱综合| 欧美一区二区大片 | 91黄色片免费看 | 久久久久久久国产精品 | 久久久久久国产精品久久 | 蜜桃免费一区二区三区 | 欧美性受 | 国产在线一区二区 | 黄色免费在线网址 | 天天干狠狠干 | 久久精品视频免费观看 | 久久99深爱久久99精品 | 久久91精品| 亚洲精品视频一区二区三区 | 久久躁日日躁aaaaxxxx | 日韩av中文 | 一级毛片视频 | www成年人视频 | 91网视频 | 国产www.| 美女爽到呻吟久久久久 | 欧美成年人网站 | 成人免费观看网站 | 日日夜夜精品视频 | 日韩成人在线观看 | 97色伦网| 国产高清在线精品一区二区三区 |