jvm虚拟机都有哪些?常用jvm虚拟机简介

  • 一、Java虚拟机
  • 二、Oracle的HotSpot虚拟机
  • 三、JRockit虚拟机
  • 四、J9虚拟机
  • 五、Java虚拟机拓展

一、Java虚拟机

以下介绍三种常见的Java虚拟机,当然世界上还有其他很多,在这里不一一介绍,如果感兴趣的话,可以自行百度。

  1. OracleHotSpot虚拟机;
  2. BEA SystemJRockit虚拟机;
  3. IBM公司的J9虚拟机;

Oracle的HotSpot虚拟机,BEA System的JRockit虚拟机以及IBM公司的J9虚拟机,并称“三大商业Java虚拟机”。

二、Oracle的HotSpot虚拟机

提起 HotSpot VM,相信所有Java程序员都知道,它是 Sun JDKOpenJDK 中所带的虚拟机,也是目前使用范围最广的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 VMHotSpot VM哪个成为Sun主要支持的VM产品,在Sun公司内部还有过争论,HotSpot打败Exact并不能算技术上的胜利),HotSpot VM的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分(其中当然也包括了HotSpot VM)在GPL协议下公开了源码,并在此基础上建立了OpenJDK。这样,HotSpot VM便成为了Sun JDKOpenJDK两个实现极度接近的JDK项目的共同虚拟机。

在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VMHotSpot VMOracle公司宣布在不久的将来(大约应在发布JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务,使用HotSpotJIT编译器与混合的运行时系统。

三、JRockit虚拟机

JRockit 虚拟机曾经号称是“世界上速度最快的Java 虚拟机”(广告词,IBMJ9虚拟机也这样宣传过,总体上三大虚拟机的性能是交替上升的),它是BEA在2002年从AppealVirtual Machines 公司收购获得的Java 虚拟机。BEA将其发展为一款专门为服务器硬件和服务端应用场景高度优化的虚拟机,由于专注于服务端应用,它可以不太关注于程序启动速度,因此JRockit 内部不包含解释器实现,全部代码都靠即时编译器编译后执行。

一个全面的Java运行时解决方案组合,包括了行业最快的标准Java解决方案。 大量的行业基准测试显示,基本JRockit JVM是世界上最快的JVM。JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务前端办公军事指挥与控制电信网络的需要。使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70% )和硬件成本的减少(达50%)。

四、J9虚拟机

IBM J9 虚拟机并不是 IBM 公司唯一的 Java 虚拟机,不过目前IBM 力发展无就J9J9 这个名字最初只是内部开发代号而己,开始选定的正式名称是“IBM Technology fotJava Virtual Machine”,简称T4J,但这个名字太扬口,接受度远不 J9J9 虚拟机最初是由IBM Otawa 实验室的一个 SmalTalk 虚机项目扩展而来,当时这个虚拟机有一个Bug是因为8KB常量值定义错误引起,工程师们花了很长时间终于发现并解决了这个错误,此后这个版本的虚拟机就被称为 K8,后来由其扩展而来、支持 Java 语言的虚拟机就被命名为J9。与BEA JRockit 只专注于服务端应用不同,IBM J9虚拟机的市场定位与HotSpot 比较接近,它是一款在设计上全面考虑服务端、桌面应用,再到嵌人式的多用途虚拟机,开发J9的目的是作为IBM公司各种Java 产品的执行平台,在和IBM产品(如IBM WebSphere 等)搭配以及在IBMAIXZ/OS这些平台上部Java应用。

IBM J9直至今天仍旧非常活跃,IBM J9 虚拟机的职责分离与模块化做得比HotSpot 更优秀,由J9虚拟机中抽象封装出来的核心组件库(包括垃圾收集器、即时编译器、诊断监控子系统等)就单独构成了IBM OMR项目,可以在其他语言平台如 Ruby、Python 中快速组装成相应的功能。从2016年起,IBM逐步将OMR项目和J9 虚拟机进行开源,完全开源后便将它们捐献给了Eclipse 基金会管理,并重新命名为 Eclipse OMROpenJ9。如果为了学习虚拟机技术而去阅读源码,更加模块化的OpenJ9代码其实是比HotSpot 更好的选择。如果为了使用Java虚拟机时多一种选择,那可以通过AdoptOpenJDK来获得采用OpenJ9搭配上OpenJDK其他类库组成的完整JDK

BEAIBM公司外,其他一些大公司也号称有自己的专属JDK 和虚拟机,但是它们要么是通过从 Sun/Oracle 公司购买版权的方式获得的(如HPSAP等),要么是基于OpenJDK项目改进而来的(如阿里巴巴、Twitter 等),都并非自己独立开发。

五、Java虚拟机拓展

1. 虚拟机始祖:Sun Classic / Exact VM
2. 武林盟主:HotSpot VM
3. 小家碧玉:Mobile / Embedded VM
4. 天下第二:BEA JRockit / IBM J9 VM
5. 软硬合璧:BEA Liquid VM / Azul VM
6. 挑战者:Apache Harmony / Google Android Dalvik VM
7. 没有成功,但并非失败:Microsoft JVM及其他
8. 百家争鸣(KVM、Java Card VM、Squawk VM、JavaInJava、Maxine VM、Jikes RVM\IK VM.NET、JamVM、CacaoVM、SableVM、Kaffe、Jelatine JVM、NanoVM、MRP、Moxie JVM)

以上Java虚拟机拓展内容引自《深入理解Java虚拟机-JVM高级特性与最佳实践》一书。

【JVM】jvm虚拟机都有哪些?常用jvm虚拟机简介相关推荐

  1. JVM参数太多?一网打尽常用JVM参数!

    JVM提供的参数非常多,并且各种类型的参数能够提供不同的功能 理解JVM运行原理和熟悉常用JVM参数能够帮助我们更好的进行调优 本篇文章将介绍JVM参数的分类,以及GC日志.运行时内存区.OOM.垃圾 ...

  2. 常用的虚拟机软件有哪些?linux操作系统基础

    学Linux运维技术,搭建学习Linux的运维环境是必不可少的.很多朋友都是利用虚拟机学习Linux的,那么虚拟机是什么?常用的虚拟机有哪些?如何选择合适的虚拟机软件进行学习呢? 虚拟机是什么? 虚拟 ...

  3. Java虚拟机详解----常用JVM配置参数

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. JVM规范系列第2章:Java虚拟机结构

    本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...

  5. 《深入理解JVM.2nd》笔记(四):虚拟机性能监控与故障处理工具

    文章目录 概述 JDK的命令行工具 jps:虚拟机进程状况工具 jstat:虚拟机统计信息监视工具 jinfo:Java配置信息工具 jmap:Java内存映像工具 jhat:虚拟机堆转储快照分析工具 ...

  6. java jvm垃圾回收算法_深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how ...

  7. Java虚拟机(三)——初识JVM的垃圾回收机制

    前言 对于程序计数器.虚拟机栈.本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭.并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回 ...

  8. JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)

    JVM(Java虚拟机) JVM 内存模型 结构图 jdk1.8 结构图(极简) jdk1.8 结构图(简单) JVM(Java虚拟机): 是一个抽象的计算模型. 如同一台真实的机器,它有自己的指令集 ...

  9. JVM虚拟机(最详细的jvm总结)

    我跟你讲一下我对于java的理解吧 java最大的特点就是平台无关性,一次编译,到处运行. Java源码首先被编译成字节码,再由不同平台的JVM进行解析,JAVA语言在不同的平台上运行时不需要进行重新 ...

最新文章

  1. ubuntu14.04 下安装jdk1.8
  2. Weex-初次见到你
  3. java多线程总结五:线程池的原理及实现
  4. 爬虫代理及ssl验证
  5. autoflowchart软件使用步骤_编程怎么入门,7个步骤带你飞, 网友:上车!
  6. 弗拉明戈舞_百度百科
  7. vs 不能自动 析构函数_深入理解C++虚函数的override、overload与hide以及虚析构函数...
  8. python多线程并发写入_Python多线程并发的简单测试
  9. Spring Security:自定义登录页面
  10. RocketMQ中的autoCreateTopicEnable是如何实现自动创建topic?
  11. mysql with rollup_MySQL-with rollup函数运用 _20160930
  12. openwrt 问题四 9531编译解决方法
  13. 步进电机驱动的使用及程序
  14. 孤独星球android app,《孤独星球》终于出了全套免费的旅行指南APP!
  15. 疯狂动物城简介第一台通用计算机,疯狂动物城 简介
  16. 超简单 Python 头像戴圣诞帽教程
  17. 十八、绘制游戏背景图片
  18. 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示
  19. 学生信息管理系统——python版(附流程图)
  20. java jsp聊天系统_java web实现简单聊天室

热门文章

  1. win10 64位下mingw4.9编译qt5.6.2
  2. 【Mixup】《Mixup:Beyond Empirical Risk Minimization》
  3. 小程序使用 Antv F2的报错chart.pieLabel is not a function解决办法
  4. 鄂尔多斯人速看!除了放假通知,还有这几件大事正式执行!
  5. stm32 PWM中的频率、占空比计算的总结
  6. Linux——扩展和缩减、删除逻辑卷
  7. 安卓一键清理内存_垃圾一键清理大师软件下载-垃圾一键清理大师下载v3.2.2 安卓版...
  8. Image To PDF or XPS V5.0 汉化版,tek2y原创汉化!
  9. 阿里云平台微信告警(基于收费平台)
  10. python爬取知乎上的小姐姐