1、Sun Classic VM
世界上第一款商用虚拟机,只能使用纯解释器的方式来执行JAVA代码,已经被淘汰。
2、Exact VM(Exact Memory Management)(准确式内存管理)
已经具备现代高性能虚拟机的雏形:如两级即时编译器、编译器与解释器混合工作模式等。但是只在Solaris
平台出现过,不就就被更为优秀的HotSpot VM所取代。
3、HotSpot VM
3.1、历史
3.2、优势
HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,如
它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSpot还稍早一些,
HotSpot一开始就是准确式GC,而Exact VM之中也有与HotSpot几乎一样的热点探测。为了Exact VM和HotSpot VM哪个成为
Sun主要支持的VM产品,在Sun公司内部还有过争论,HotSpot打败Exact并不能算技术上的胜利),HotSpot VM的热点代码
探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调
用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,
可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相
对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。
3.3、独占鳌头
在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分
(其中当然也包括了HotSpot VM)在GPL协议下公开了源码,并在此基础上建立了OpenJDK。这样,HotSpot
VM便成为了Sun JDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。
在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java
虚拟机:JRockit VM和HotSpot VM。Oracle公司宣布在不久的将来(大约应在发布JDK8的时候)会完成这两款
虚拟机的整合工作,使之优势互补。整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使
用JRockit的垃圾回收器与MissionControl服务,使用HotSpot的JIT编译器与混合的运行时系统。
4、KVM
简单、轻量、高度可移植。
运行在手机平台。
5、JRockit
号称世界上最快的JAVA虚拟机。
优势是垃圾回收器和MissionControl服务套件(寻找生产环境中内存泄露的根因)。
6、J9
IBM为自己产品设计的一款虚拟机
7、Dalvik
Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平
台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik
设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,
并且 [1] 每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如IOS的根源。
2014年6月25日,Android L 正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它
的是传闻已久的ART。
8、MicrosoftJVM
只能运行于Windows系统下的JAVA虚拟机,且是Windows系统下运行速度最快的JAVA虚拟机。不过树大招风,好景不长,sun公司将微软以不正当竞争告上法庭,MicrosoftJVM便是一个强有力的证据。最终官司以微软失败告终,MicrosoftJVM从此便“暂时”退出了历史舞台。
9、高性能JAV虚拟机(Azul VM 、 Liquid VM)
我们平时所提及的“高性能Java虚拟机”一般是指HotSpot、JRockit、J9这类在通用平台上运行的商用虚拟机,但其实
Azul VM和BEA Liquid VM这类特定硬件平台专有的虚拟机才是“高性能”的武器。
10、TaoBaoVM
阿里根据HotSpot深度定制的一款虚拟机。对硬件要求很高,只能使用Intrel的CPU。