Dalvik VM (DVM) 与Java VM (JVM)之间有哪些区别

来源:互联网 发布:绿色建筑计算软件 编辑:程序博客网 时间:2024/06/06 16:23

Dalvik虚拟机存在于Android系统,JVM是Java虚拟机,两者都是虚拟机,它们之间有什么区别呢?本文就对两者进行比较,讲述它们的不同

Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式

是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。(dx 是一套工具,可以将 Java .class 转换成 .dex 格式. 一个dex档通常会有多个.class。由于dex有时

必须进行最佳化,会使档案大小增加1-4倍,以ODEX结尾。) 


1、Dalvik 和标准 Java 虚拟机(JVM)的首要差别


Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。  


2、Dalvik 和 Java 字节码的区别

Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。


3、Dalvik 和 Java SDK的SDK不同。


4、Dalvik 和 Java 运行环境的区别    

Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有

程序都被关闭。Dalvik虚拟机在android2.2之后使用JIT (Just-In-Time)技术,与传统JVM的JIT并不完全相同, Dalvik虚拟机有自己的 bytecode,并非使用 Java bytecode


ART 的机制与 Dalvik 不同(4.4引入)。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第

一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加

快速。

0 0
原创粉丝点击