一.什么是虚拟机
百度百科中解释:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
其实简单解释就是虚拟出来的一套拥有相当于实际计算机功能的系统,相信搞it的大家,在学生时代就没少在自己计算机装过各种系统的虚拟机,比如没有苹果电脑,又想玩玩苹果洗用、又不想把window系统换成苹果系统,怎么办呢,在window上安装个虚拟机,虚拟机上装mac系统,搞定。
二.什么是jvm
java虚拟机(Java Virtual Machine)简称jvm,是运行所有java程序的抽象计算机,是java的运行环境,Java虚拟机使java语言可以跨平台运行。Java语言编译生成在Java虚拟机上运行的字节码,Java虚拟机在执行字节码时把字节码解释成具体平台上的机器指令执行。
三.什么是Dalvik
Dalvik是google设计的用于android平台的虚拟机,是Android中运行java的基础,其指令是基于寄存器的,运行的是经过转换的.dex文件(.dex是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统),Dalvik虚拟机每次应用运行的时候,将代码编译成机器语言执行。
四.什么是ART
android5.0之后使用ART虚拟机代替了Dalvik,ART虚拟机采用AOT(Ahead-Of-Time)技术,在应用安装时就把代码转换成机器语言,在程序运行时不再进行转换,从而优化了应用的运行速度。
五.jvm和Dalvik区别:
1.jvm基于栈,Dalvik是基于寄存器的。
2.jvm运行的是java字节码,Dalvik运行的是专有的文件格式.dex(dex可以减少整体文件大小,提高I/o操作的类查找速度)
六.Dalvik和ART的区别:
Dalvik在每次应用运行时将代码编译成机器码执行,ART在应用安装时就将代码全部转换成机器码,在应用运行时不再进行转换。
ART优点:程序运行速度更快
缺点:安装时占用空间大、安装速度慢