Dalvik, VM会监视所有的程序APK,并且创建依赖关系熟,为每个程序优化代码并存储在Dalvik缓存中。Dalvik VM第一次加载后会生成Cache文件,加速加载,Dalvik Vm的第一次加载很慢。
dx是一套工具,可以将Java的.class文件转换成.dex格式,一个dex文档通常会有多个.class文件。由于dex有时必须进行优化,会是文件大小正价1-4倍,并以ODEX结尾。
1.虚拟机很小,使用空间也小
2.Dalvik VM没有JIT编译器
3.常量池已被修改为只使用32位的索引,简化解释器
4.它使用自己字节码,而非java字节码
Android的应用程序主要是用户界面的,通常以Java程序编写,包含各种资源文件。
Dalvik VM和Java虚拟机的差异如下:
1.Dalvik VM早期没有使用JIT(just-in-time)技术,从Android2.2开始,Dalvik VM也支持JIT
2.Dalvik VM有自己的bytecode,并非使用Java bytecode
3.Dalvik Vm基于暂存器(register),而JVM基于栈(stack)
4.Dalvik Vm通过Zygote进行Class Preloading,Zygote会完成虚拟机的初始化,也与Java虚拟机的不同之处。