1 minute
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。
还有以下几点:
-
1、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
-
2、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
-
3、不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex。
-
4、dex文件格式可以减少整体文件尺寸,提高I/O操作的类查找速度。
-
5、odex是为了在运行过程中进一步提高性能,对dex文件的进一步优化。
-
6、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。
- 7、有一个特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化、库的加载、预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的速度提供给系统。对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域。
- Log in to post comments
Comments
Title of the comment
Duis egestas convallis elit sit amet tempus. Morbi arcu arcu, commodo sit amet vehicula nec, aliquam ac tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Title of the comment
Duis egestas convallis elit sit amet tempus. Morbi arcu arcu, commodo sit amet vehicula nec, aliquam ac tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Title of the comment
Duis egestas convallis elit sit amet tempus. Morbi arcu arcu, commodo sit amet vehicula nec, aliquam ac tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.