jvm oracle sun,JVM - 常见的JVM种类

HotSpot VM

HotSpot VM是绝对的主流。大家用它的时候很可能就没想过还有别的选择,

或者是为了迁就依赖了Oracle/Sun JDK某些具体实现的烂代码而选择用HotSpot VM省点心。

Oracle / Sun JDK、OpenJDK的各种变种(例如IcedTea、Zulu),用的都是相同核心的HotSpot VM。

当大家说起“Java性能如何如何”、“Java有多少种GC”、“JVM如何调优”云云,经常默认说的就是特指HotSpot VM。可见其“主流性”。

JDK8的HotSpot VM已经是以前的HotSpot VM与JRockit VM的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫HotSpot VM。

这个合并并不是要把JRockit的部分代码插进HotSpot里,而是把前者一些有价值的功能在后者里重新实现一遍。移除PermGen、Java Flight Recorder、jcmd等都属于合并项目的一部分

不过要留意的是,这里的HotSpot VM特指“正常配置”版,而不包括“Zero / Shark”版。

Wikipedia那个页面上把后者称为“Zero Port”。用这个版本的人应该相当少,很多时候它的release版都build不成功

J9 VM

J9是IBM开发的一个高度模块化的JVM。在许多平台上,IBM J9 VM都只能跟IBM产品一起使用。这不是技术限制,而是许可证限制。

例如说在Windows上IBM JDK不是免费公开的,而是要跟IBM其它产品一起捆绑发布的;

使用IBM Rational、IBM WebSphere的话都有机会用到J9 VM(也可以自己选择配置使用别的Java SE JVM)。

根据许可证,这种捆绑在产品里的J9 VM不应该用于运行别的Java程序…大家有没有自己“偷偷的”拿来跑别的程序IBM也没力气管

(咳咳而在一些IBM的硬件平台上,很少客户是只买硬件不买配套软件的,IBM给一整套解决方案,里面可能就包括了IBM JDK。

这样自然而然就用上了J9 VM。

所以J9 VM得算在主流里,虽然很少是大家主动选择的首选。

J9 VM的性能水平大致跟HotSpot VM是一个档次的。有时HotSpot快些,有时J9快些。

不过J9 VM有一些HotSpot VM在JDK8还不支持的功能,最显著的一个就是J9支持AOT编译和更强大的class data sharing

JRockit

JRockit以前Java SE的主流JVM中还有JRockit,跟HotSpot与J9一起并称三大主流JVM。

这三家的性能水平基本都在一个水平上,竞争很激烈。

自从Oracle把BEA和Sun都收购了之后,Java SE JVM只能二选一,JRockit就炮灰了。

JRockit最后发布的大版本是R28,只到JDK6;原本在开发中的R29及JDK7的对应功能都没来得及完成项目就被终止了。

参考:

https://www.zhihu.com/question/29265430?sort=created

https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines

http://hllvm.group.iteye.com/group/topic/17147

http://blog.csdn.net/yano_nankai/article/details/50957578

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例

本文实例讲述了Python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下: 初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。 #!/usr/bin/python # …

oracle conneciton properties,在WAS Liberty连接池中,我可以验证借用连接吗?

我们当前正在将应用程序迁移到Liberty服务器(8.5.5.9)上运行。我们发现应用程序服务器和数据库之间的连接偶尔会被防火墙终止,因为它们会在很长一段时间内处于空闲状态。发生这种情况时,在下一个HTTP请求中,应用程序将收到其中一个断开的连接…

python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版

mPython 是一款针对Python 3编程语言的图形化编辑工具。支持函数,仿真、hex、python、blockly三种代码读写等功能。并可以与TPYBoard系类开发板配合使用,直接连接PC端进行编程。【功能特点】 1、不依赖网络,可离线安装使用 2、支持hex、pytho…

python三种变量方式_python2.x 3种变量形式调用

python 变量使用raw_input 2.x input 3.x第一种name input("name:")age input("age:")job input("job:")info ----------info - %s ----------Name: %sAge: %sJob: %s% (name,name,age,job)print (info)第二种name input("name:"…

linux更新系统内核,如何更新Linux内核来提升系统性能?

Linux内核的开发速度是前所未有的,大概每二三个月就会有一个新的主要版本发布。每次发布都带来了几项新的功能和改进,许多人可以充分利用它们,让计算体验更快、更高效或者有其他方面的提升。可问题是,你通常无法充分利用这些刚发布…

php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版

大家好,这里是深海网络,今天给大家讲解一下新版影视小程序搭建。  首先给大家看一下新版影视小程序是什么样子的,它有黑夜和白天两种观影模式,而且搜索精准,播放速度快。01第一步,开始正式搭建。新版区小…

linux编译代码命令,Linux下使用GCC命令编译代码

Linux下初学时最好从命令行入手,这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令选项,但并不是…

简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法

感谢本文几种描述方法,让我解决了最近的一段时间的疑问,转载下来,以供后面查血使用。本文链接:https://blog.csdn.net/huanghanqian/article/details/52847835四种join的区别已老生常谈:INNER JOIN(也可简写为JOIN): 如…

有两个python怎么停用其中一_python3.X 复学(2)-----开始了就不要停止

生命就是一种旅行,开始了就不要停止,无非就是眼前的苟且还有以后的苟且,只要还有一口气 ----------hashlinux 因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Li…

react项目中的参数解构_一天入门React学习心得

一天入门React学习心得阅读前必读本文写的仓促,算是一个学习笔记吧,算是一个入门级的学习文章。如果你刚刚入门,那么可能一些入门的视频可能更加适合你。但如果具备一些知识,比如Vue,那么视频就不适合了。建议看完本篇…

python random函数_详细代码实战讲解:如何用 Python让自己变成天选之子

今天为大家带来的内容是:详细代码讲解:如何用 Python让自己变成天选之子话不多说直接上代码:请大家猜一猜下面这段代码的运行效果:你是不是以为这段代码运行以后,结果如下图所示?但实际上,我可以…

安卓图标_干货 | 安卓界面系统规范

众所周知,安卓系统是开源的,国内又有超多的手机厂商,小米、魅族、华为、oppo、三星等,每一个品牌有属于自己的UI设计规范,但是我们主要分析UI界面尺寸规范。1、字体安卓系统中文采用的是思源黑体,英文字体为…

pyqt安装_Win10下安装LabelImg以及使用(绝对是全网最简单的教程)

labelImg是图片标注软件,用于数据集的制作、标注等等。下面介绍labelImg的安装过程。我用的是anaconda,所以以anaconda prompt作为终端:在Anaconda Prompt中依次运行以下命令(注意大小写):pip install PyQt…

delphi listview 添加数据 慢_ListView 的缓存机制

一.前言ListView 作为一个 Android 5.x 之前的一个用于显示数据列表的控件,或许在今天都已经被 RecyclerView 完全替代,但是其中的缓存机制仍然值得我们去了解,对后面学习 RecyclerView 的缓存机制有很大的帮助。下面将根据 ListView 的三个过…

c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0210】Origin多组柱状图3D柱状图及3D散点图...

此篇,我们来分享Origin绘制多组柱状图、立体柱状图和三维散点图。一、多组柱状图1)准备数据。准备数据,并点击Plot——》Column/Bar/Pie——》Column进行绘制。结果如下。2)带有误差棒的绘图。如果想绘制带有误差棒的直方图&#…

保存文件_wps文件保存在哪里

我们经常使用WPS进行文本、表格的编辑,有时候顺手点击保存之后,文件就会根据默认文件路径保存,如果您不知道默认的文件保存路径,怎么才能够找到刚刚保存的文件,下面就为大家介绍一下wps文件保存在哪里,希望…

linux 内核io操作,关于Linux内核中的异步IO的使用

我们都知道异步IO的作用,就是可以提高我们程序的并发能力,尤其在网络模型中。在linux中有aio的一系列异步IO的函数接口,但是这类函数都是glibc库中的函数,是基于多线程实现,不是真正的异步IO,在内核中有真正…

linux内核模块实验,linux内核模块实验(2学时).doc

第一个内核模块实验一: 预习要求:( 1 ) 做本实验之前,请复习相关内核模块知识。( 2 ) 请了解内核模块的编写、编译及安装与卸载方法。( 3 ) 请学习内核打印函数 printk() 的用法。( 4 ) 请复习 Makefile 文件的编写。二:实验目的&…

mobi格式电子书_进阶能力 | 了解常见的电子书格式

静读君是初中开始接触电子书的,那个时候以为电子书就是TXT,到后来渐渐地接触到了PDF、DOC、CAJ 才知道原来电子书还分这么多的格式,那个时候还在想,为什么要弄这么多不同的格式呢?那不是自找麻烦吗?接触的…

python的pass在函数中的作用_Pass Share:Python / Julia 中函数变量的传递机制

从 C / MATLAB 过来的同学注意!Julia / Python 中使用的参数传递变量方式是不一样的。(以C的眼光看)在语法上细微的差别就会产生完全不一样的内容。(至少我被坑了很多次)。这篇文章的主要作用是逃坑以及方便各种从不同语言过来的人投奔我们Julia!/狗头变…