当前位置: 首页 > 工具软件 > dvm > 使用案例 >

DVM

锺离珂
2023-12-01

Android 5.0以前默认使用的DVM

JVM与DVM的区别:

1.基于的架构不同:
JVM是基于栈的,读写数据需要较多的指令。
DVM是基于寄存器的,省去了数据复制时的栈的出入栈操作,提高了性能。但是基于寄存器的指令要比基于栈的指令要大。

2.执行的字节码不同:
JVM:.java->.class->.jar,.jar只是对class进行了打包,并没有将class信息合并。
DVM:.java->.class->.dex,.dex会将所有的class整合在一起,减少了IO操作,查询类的速度更快,并且在整合过程中去掉了class的冗余信息。

3.每个DVM都对应一个应用,DVM是由Zygote进程创建、初始化的。

4.DVM拥有 预加载-共享 机制,也就是不同应用之间可以共享同一个类。但是JVM不同,JVM每个应用都是独立的。

 

DVM GC算法:标记-清除算法

 

Android 5.0及以后默认使用ART

DVM与ART的区别:(Android 5.0及以后默认使用ART)

1.
DVM每次启动应用,都会去JIT,效率很低。
ART采用AOT(ahead of time compilation,预编译),将字节码编译成机器码存储在本地,这样程序运行的时候效率就非常高。
AOT的缺点有两个:1.在安装的时候会非常耗时;2.class编译生成的机器码会很多,占用空间比较大。
对于安装非常耗时,在Android 7.0,基于ART引入JIT机制,弥补了这一缺陷。

2.DVM是为32位CPU设计的,ART支持64位兼容32位,这也是DVM淘汰的理由之一。
 

 类似资料:

相关阅读

相关文章

相关问答