美文网首页
什么是HotSpot VM & 深入理解Java虚拟机 JVM

什么是HotSpot VM & 深入理解Java虚拟机 JVM

作者: 爱吃醋的工程师 | 来源:发表于2021-11-21 11:40 被阅读0次

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

HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,如它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSpot还稍早一些,HotSpot一开始就是准确式GC,而Exact VM之中也有与HotSpot几乎一样的热点探测。为了Exact VM和HotSpot VM哪个成为Sun主要支持的VM产品,在Sun公司内部还有过争论,HotSpot打败Exact并不能算技术上的胜利),HotSpot VM的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

在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公司宣布在不久的将来(大约应在发布JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务,使用HotSpot的JIT编译器与混合的运行时系统。

相关文章

  • Java书籍推荐

    《深入理解Java虚拟机:JVM高级特性与最佳实践》 ***** 《HotSpot实战》 《Java并发编程实战》...

  • JVM系列-01-JVM内存模型

    [TOC] 声明 本篇文章是本人阅读《深入理解JVM》和《java虚拟机规范》时的笔记。JVM是HotSpot,j...

  • 书单

    技术书单 Java编程思想 深入理解Java虚拟机:JVM高级特性与最佳实践 HotSpot实战 Spring实战...

  • JVM内存笔记

    JVM(Java虚拟机),最常见的就是HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和Op...

  • p4-equals系列:主流的jvm有哪几种?

    HotSpot VM《java虚拟机规范》的标准实现。Oracle/Sun JDK的核心都是HotSpot VM。...

  • Java虚拟机浅浅析

    Java SE体系架构 虚拟机的发展 HotSpot VM目前适用范围最广的Java虚拟机 JRocket VM号...

  • 一、几种jvm和自动化内存管理

    来自于《深入理解java虚拟机》,进行概括总结。 一、几种java虚拟机:classic、hotSpot、JRoc...

  • 书单

    《深入理解计算机系统》 《Think in Java》 《深入理解JVM虚拟机》 《Effective Java》...

  • JVM基础和内存区域剖析

    一、JVM的种类 Sun Classic VM Exact VM(EMM 准确式) HotSpot VM JVM(...

  • JDK自带的命令行工具

    本文基于HotSpot虚拟机,JDK版本1.8.0_171,windows系统本文参考《深入理解JAVA虚拟机》 ...

网友评论

      本文标题:什么是HotSpot VM & 深入理解Java虚拟机 JVM

      本文链接:https://www.haomeiwen.com/subject/uffbtrtx.html