深入理解JVM学习笔记(七、JAVA虚拟机介绍)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jintaohahahaha/article/details/80728105
        下面,我们对上述JAVA虚拟机产品进行逐一介绍:

1、Sun Classic VM

        世界上第一款商用虚拟机,只能使用纯解释器的方式来执行JAVA代码,已经被淘汰。

2、Exact VM(Exact Memory Management)(准确式内存管理)

        已经具备现代高性能虚拟机的雏形:如两级即时编译器、编译器与解释器混合工作模式等。但是只在Solaris

平台出现过,不就就被更为优秀的HotSpot VM所取代。

3、HotSpot VM

    3.1、历史
        提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用
范围最广的Java虚拟机。但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公
司开发,而是由一家名为“Longview Technologies”的小公司设计的;甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机,Sun公司注意到了这款虚拟机在JIT编译上有许多优秀的理念和实际效果,在1997年收购了Longview Technologies公司,从而获得了HotSpot VM。
    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。

展开阅读全文

没有更多推荐了,返回首页