1、为什么会出现DVM

DVM是针对JVM而言的,JVM是Oricle公司的产品,担心版权问题,既然java是开源的,索性就研究了JVM,写出了DVM。

DVM是针对移动设备而生的虚拟机。

2、DVM的优势到底在哪里

(1)、基于的物理硬件不一样

JVM是基于栈的架构,栈是内存上面一段连续的存储空间。

DVM是基于寄存器的架构,寄存器是cpu上的一块存储空间。

所以cpu直接访问自己上面的一块空间的数据的效率肯定要大于访问内存上面的数据。

(2)、执行的字节码文件不一样

JVM: .java–>.class–>.jar

DVM: .java–>.class–>.dex
在这里插入图片描述
.jar文件里面包含多个.class文件,每个.class文件里面包含了该类的头信息(如编译版本)、常量池、类信息、域、方法、属性等等,当JVM加载该.jar文件的时候,会加载里面的所有的.class文件,这样会很慢,而移动设备的内存本来就很小,不可能像JVM这样加载,所以它使用的不是.jar文件,而是.apk文件,该文件里面只包含了一个.dex文件,这个.dex文件里面将所有的.class里面所包含的信息全部整合在一起了,这样再加载就很快了。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作。

(3)、运行的环境不同

DVM: 每个应用启动都运行一个单独的DVM,每个DVM单独占用一个Linux进程。

JVM: 只能运行一个实例,即所有的应用都运行在同一个JVM中。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐