1、什么是Dalvik虚拟机java
Dalvik是Google公司本身设计用于Android 平台的Java虚拟机,具备高效、简洁、节省资源的特色,从Android系统架构图知,Dalvik虚拟机运行在Android的运行时库层安全
Dalvik做为面向Linux、为嵌入式操做系统设计的虚拟机,主要负责完成对象生命周期管理、堆栈管理、线程管理、安全和异常管理,以及垃圾回收等。架构
2、Dalvik虚拟机的特色app
3、Dalvik虚拟机和Java虚拟机的区别工具
Java虚拟机运行的是Java字节码,Dalvik虚拟机运行的Dalvik字节码ui
传统的Java程序通过编译,生成Java字节码保存在class文件中,Java虚拟机经过解码class文件中的内容运行程序。 而Dalvik虚拟机运行的是Dalvik字节码,全部的Dalvik字节码由Java字节码转换而来,并被打包到一个dex文件中,Dalvik虚拟机经过解析dex文件来执行这些字节码。操作系统
Dalvik可执行文件体积小,Android SDK中有一个叫dx的工具负责将Java字节码转换成Dalvik字节码。线程
dx工具对Java类文件从新排列,消除在文件中出现的全部的冗余信息,避免虚拟机在初始化时出现反复的文件加载和解析过程。 通常状况下,Java类文件中包含多个不一样的方法签名,若是其余的类文件引用该类文件中的防范, 方法签名也会被复制到其余类文件中,也就是说, 多个不一样的类会同时包含相同的方法签名,一样的,大量的字符串常量在多个类文件中也会被重复使用,这些冗余信息会直接增长文件的体积,同时也会影响虚拟机解析文件的效率。消除其中的冗余信息,从新组合成一个常量池,全部的类文件共享一个常量池,因为dx工具对常量池的压缩,使得相同的字符串,常量在dex文件中只出现一次,从而减少了文件的体积。设计
Java虚拟机与Dalvik虚拟机架构不一样。这也是它们之间最大的区别。3d
4、Dalvik虚拟机结构
5、Android APK 编译打包流程
总结:编译-> Dex -> 打包 -> 签名和对齐