google为了解决与oracle之间关于java相关专利和授权的纠纷,开发了DVM。
jvm与dvm之间的区别:
dvm执行的是.dex格式文件,jvm执行的是.class文件,android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件,apk就是android package的意思,jvm执行的是.class文件。
dvm是基于寄存器的虚拟机,而jvm是基于虚拟栈的虚拟机。寄存器存取速度比栈快得多,dvm可以根据硬件实现最大的优化,比较适合移动设备。
class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中,减少了I/O操作,提高了类的查找速度。
网友评论