写点什么

Java 虚拟机的历史,java 编写视频播放器

用户头像
极客good
关注
发布于: 刚刚

但是如果插入了 JIT 编译器,JIT 编译器将完全替换虚拟机的执行系统,并且解释器将不再工作。简单地说,在 Sun Classic 虚拟机中,解释器和编译器不能共存。


即使使用插件 JIT 编译器,Sun Classic 虚拟机的执行速度也不够快。由于解释器无法与编译器一起工作,因此虚拟机无法判断哪个方法被频繁使用,因此只能编译每个方法。这导致虚拟机只能采用相对简单的优化技术,不能进行稍高耗时的优化技术。因为如果将耗时的优化技术应用于所有代码,那么编译时间将非常慢。


虽然 Sun 经典虚拟机存在这样那样的问题,但是它的生命力仍然很强。在 JDK 1.3 之前,它是 JDK 的默认虚拟机。在 JDK 1.3 中,HotSpot 成为默认虚拟机,并作为备用虚拟机存在。到了 JDK 1.4,它正式退出了历史舞台。可以说,Sun Classic 已经存在了将近四年,但是另一个虚拟机并不那么幸运。


无疾而终:Sun Exact VM




在 Sun Classic 发布之后,Sun 的虚拟机团队在 JDK 1.2 发布了一个名为 Exact VM 的虚拟机,试图解决 Classic VM 遇到的所有问题。它的执行系统解决了经典 VM 的解释器和编译器不能同时工作的问题。它还具有现代高性能处理器的一些特点,如两级即时编译。


此外,Exact VM 还改进了虚拟机的对象查找。在经典 VM 中,如果您想要找到对象,您需要通过句柄(类似于指针)来找到它。如果需要搜索对象,则需要通过它所构建的句柄树逐层搜索它。但是,在 Exact VM 中使用了精确内存管理,即虚拟机可以准确地知道内存中数据的类型,从而降低了搜索成本,提高了执行性能。


不幸的是,虽然 ExactVM 已经发布,但它直到退出后才真正大规模使用。当发布 JDK 1.2 时,启动了精确的 VM,但 Sun 经典 VM 仍然是默认的 Java 虚拟机。当 JDK 1.3 发布时,虚拟机 HotSpot VM 被引入作为默认虚拟机,Sun Classic VM 被引入作为备用虚拟机。


武林盟主:Sun HotSpot VM




热点 VM 可以说是最广泛使用的 Java 虚拟机,它几乎为所有 Java 虚拟机所知。但实际上,虚拟机不是由 Sun 开发的,而是由 Longview Technologies 开发的。Sun 注意到 JIT 编译中的许多优秀结果,于 1997 年收购了 Longview Technologies,并收购了 HotSpot VM。


HotSpot 不仅具有上述两台虚拟机(如精确的内存管理)的优点,还具有热点检测等许多新技术。热点检测技术是指通过执行计数器,找出最有价值的代码,然后通知 JIT 编译器在方法上进行深入的优化。但是 Exact VM 中也有类似的技术,Sun 内部也有很大的争议,但是为什么选择 HotSpot 作为默认虚拟机还不清楚。


总的来说,自 2000 年发布 JDK 1.3 以来,HotSpot VM 一直作为默认虚拟机处于历史阶段。现在,2018 年,18 年过去了,它仍然是我们最常用的虚拟机,它显示了 Sun HotSpot VM 的韧性。


百家争鸣:BEA JRockit / IBM J9 VM




所有这些都是 Sun 公司推出的虚拟机,但是除了 Sun 公司,其他组织和公司也开发了许多虚拟机实现,其中最著名的是 BEA JRockit 和 IBM J9 VM。


BEA 的 JRockit 是一个专注于服务器硬件和服务器应用程序场景的虚拟机。它对服务器场景做了很多优化,因此它不太关注程序启动速度。JRockit 虚拟机不包含解释器实现,所有代码都由即时编译器编译和执行。此外,它的任务控制服务套件也非常强大。


IBM 的 J9 VM 是一个更通用的虚拟机,它被定位为应用于从服务器到桌面应用程序到嵌入式系统的多用途虚拟机


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


。IBM 开发 J9VM 作为 IBM 各种 Java 产品的执行平台。


武林外传:那些无名虚拟机




从 Sun Classic、Sun Exact VM、Sun HotSpot VM,再到 BEA JRockit、IBM J9 VM,这几个虚拟机可以说是虚拟机的正史了,是每个 Java 程序员应该了解的。但在这之外,其实还有各种各样的虚拟机存在。


例如,最强大的不是上面提到的虚拟机,而是专用的商业和虚拟机,称为 Azul VM 和 BEA.VM。这些虚拟机只在特定的硬件平台上运行,所以要求比较高。但是它的性能也很强。它可以管理至少几十个 CPU 和数百 GB 的内存资源,但也为垃圾收集器提供了在大内存范围内可控的 GC 时间,等等。


此外,还有许多其他虚拟机,比如 Apache Harmony、Google Android Dalvik VM、Mircosoft JVM 等等。

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Java虚拟机的历史,java编写视频播放器