(三十)、Dalvik虚拟机与java虚拟机的区别

1.虚拟机运行的字节码不同。

  JVM运行的是Java字节码:

    .java文件经过编译,生成Java字节码保存在.class文件中,JVM通过解码.class文件来运行java程序。

  DVM运行的是Dalvik字节码:

    .java文件先经过编译,生成java字节码保存在.class文件中。

    然后由SDK中一个dx的工具负责转换为Dalvik字节码。

    Dalvik字节码被打包如DEX(Dalvik Excutable)包中,DVM通过解码DEX包来运行android程序。

 

2.JVM与DVM的架构不同。

  Java基于栈结构,由于手机的硬件资源有限,无法支撑JVM的频繁地从栈上读写的开销。

  DVM基于寄存器,其数据的访问通过寄存器间直接传递,效率远高于栈。

Dalvik的Dex格式在未压缩的情况下都比压缩了的jar文件还小。

 

posted @ 2019-08-04 22:01  黎先生  阅读(406)  评论(0编辑  收藏  举报