美文网首页
Android. Dalvik虚拟机和Java虚拟机的区别

Android. Dalvik虚拟机和Java虚拟机的区别

作者: InitialX | 来源:发表于2018-05-09 16:34 被阅读78次

    最近帮分公司在招聘Android程序员,我则陪同分公司的资深Java同事一起面。由于Java老哥不懂Android,所以经常会问一些java的知识,其中JVM的问题很多,每次面试者都很无语。那么今天我们就来说818咱们Android的DVM和JVM的区别。

      1. 虚拟机运行的字节码不同。
    
    JVM运行的是Java字节码:
    .java文件经过编译,生成Java字节码保存在class文件中,JVM通过解码.class文件来运行java程序。
    
    DVM运行的是Dalvik字节码:
    .java文件先经过编译,生成java字节码保存在class文件中。然后由SDK中
    一个叫dx的工具负责转换为Dalvik字节码。
    Dalvik字节码被打包入DEX(Dalvik EXcutable)包中,DVM通过解码DEX包来运行android程序。
    
      1. JVM与DVM的架构不同。
    JVM基于栈结构,由于手机的硬件资源有限,无法支撑JVM的频繁地从栈上读写的开销。
    DVM基于寄存器,其数据的访问通过寄存器间直接传递,效率远高于栈。
    Dalvik的Dex格式在未压缩的情况下都比压缩了的JAR文件还小。
    

    除了DVM,目前更流行的是ART虚拟机,接下来将对ART进行介绍....

    相关文章

      网友评论

          本文标题:Android. Dalvik虚拟机和Java虚拟机的区别

          本文链接:https://www.haomeiwen.com/subject/bfznrftx.html