JVM 和 HotSpot 的区别?
一个Java虚拟机(JVM)是从未被物理建成硬件假想计算机。JVM 运行编译成其虚构指令集的程序,该指令集作为称为字节码的中间表示写入存储。
在运行时,字节码必须从虚构的指令集转换为主机 CPU 的实际指令集。这可以由口译员即时完成。或者字节码可以被完全编译和缓存,以比通过解释器运行得更快,在一个称为即时 (JIT) 编译的过程中。
几十年来,有许多JVM 的实现。大多数都已经消失了。
HotSpot是 JIT 技术的一种实现,它从运行解释开始,并观察应用程序的实际性能。然后选择应用程序的某些部分作为本机代码完全编译并缓存,以便更快地执行。HotSpot 是在Sun作为商业产品开发的。收购 Sun 后, Oracle通过结合其竞争产品JRockit 的重要部分进一步发展 HotSpot。HotSpot 现在通过OpenJDK项目开源,免费提供。
OpenJ9 中的另一个这样的实现,由 IBM 开发,现在通过Eclipse Foundation开源并免费提供。一些基于 OpenJDK 的 JVM 发行版将 HotSpot 替换为 OpenJ9,同时仍然使用 OpenJDK 的其余部分,例如Java SE类库。例如,AdoptOpenJDK提供的预构建发行版在某些硬件上为您提供了HotSpot或OpenJ9 的选择。
HotSpot 究竟是什么,它与 JVM 和 OpenJDK 有什么关系?是Library吗?它究竟有什么作用?
HotSpot是 JVM 部分的实现,它解释和/或编译要在主机 CPU 上执行的 Java 字节码。
OpenJ9是一个替代方案。
OpenJ9通常以更快的启动速度和更低的内存使用率而闻名,而HotSpot可能会更有效地运行长时间运行的应用程序。两者都广受好评,久经考验,并且可用于 OpenJDK 的发行版。
OpenJDK是一个开源项目,它完全实现了定义Java 平台的Java 规范、 JSR和JEP。我今天所知道的每个 JVM 实现都完全或大部分基于 OpenJDK代码库,并使用 HotSpot 或 OpenJ9 技术。
除了 JVM,OpenJDK 还为 Java SE 规范所需的所有类(例如java.lang、java.util、java.time和其他包)提供了源代码中的实现。
另外,OpenJDK 和 HotSpot 有什么区别?
HotSpot的源代码作为OpenJDK项目的一部分进行保存、维护和进一步开发。替代方案OpenJ9由Eclipse Foundation容纳、维护和进一步开发,同时取代了 OpenJDK 的某些发行版中的 HotSpot。
Java 技术的一些发行版选择随 HotSpot 一起提供。一些发行版选择将OpenJDK代码库中的HotSpot部分替换为OpenJ9替代品。
总结
- HotSpot 和OpenJ9 都是jvm的一种实现
参考
java - JVM 和 HotSpot 之间的区别? - 堆栈溢出
JVM 和 HotSpot 的区别?相关推荐
- 虚拟机jvm和hotspot的联系与区别
虚拟机jvm和hotspot的联系与区别 JVM是虚拟机,总的来说是一种标准规范,虚拟机有很多实现版本.主要作用就是运行java的类文件的.而HotSpot是虚拟机的一种实现,它是sun公司开发的,是 ...
- 关于JVM和Dalvik的区别
2019独角兽企业重金招聘Python工程师标准>>> Dalvik和JVM的几点区别 1.Dalvik 基于寄存器,而 JVM 基于栈.基于寄存器的虚拟机对于更大的程序 ...
- ART/Dalvik,JVM/Dalvik 虚拟机的区别
从功能上来看,一个高级语言虚拟机主要分为两部分,一个是解释器部分,用来运行高级语言编译生成的ByteCode:还有一部分则是Runtime运行时,用来负责运行时的内存空间开辟.管理等等. JAVA虚拟 ...
- java方法重载和重写在jvm_重载和重写在jvm运行中的区别(一)
1.重载(overload)方法 对重载方法的调用主要看静态类型,静态类型是什么类型,就调用什么类型的参数方法. 2.重写(override)方法 对重写方法的调用主要看实际类型.实际类型如果实现了该 ...
- JVM(HotSpot) 垃圾收集器
需要提前了解的知识: 1. JVM内存模型 2. JVM垃圾回收算法 HotSpot虚拟机所有的垃圾收集器如下图: 上面有7种收集器,分为部分,上面为新生代收集器,下面是老年代收集器.如果两个收集器之 ...
- JVM和JMM的区别
参考文献: java中JVM和JMM之间的区别 感谢作者分享!
- java jvm和android DVM区别
本文转自:http://blog.csdn.net/yujun411522/article/details/45932247 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为 ...
- JVM和DVM的区别
1.首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2.字节码的区别 Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的 ...
- java and android_java jvm和android DVM区别
本文转自:http://blog.csdn.net/yujun411522/article/details/45932247 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为 ...
最新文章
- python程序如何循环_在Python的一段程序中如何使用多次事件循环详解
- matplotlib(2)
- mysql int类型的长度值
- php 递归求得目录大小
- linux文件操作命令介绍(一)
- Go 语言里怎么正确实现枚举?答案藏着官方的源码里
- 苹果iPhone XI奋起直追?直接升级四摄镜头
- python 百分比输出_获取Linux系统负荷百分比的python脚本
- python学习笔记六 初识面向对象上(基础篇)
- 安卓模拟器刷小米系统_小米5x原生rom系统刷机-小米5X MIUI10刷机包下载V9.7.21最新版-西西软件下载...
- MATLAB二次规划和整数规划
- trans系列是sci几区_怎么确定SCI是几区的?
- 封闭解(Closed-form solution)、解析解(Analytical solution)、数值解(Numerical solution) 释义
- java-No route to host 解决办法
- 关于Java的抽象类与接口
- sql server delete语句删除行
- 充电电池哪个牌子好用?
- MarkDown 图片大小问题
- 米波现场桌面软件服务器地址,米波现场系统启动workerman服务service workerman start...
- amr转wav java,Android系统wav和amr的互转
热门文章
- python之pyc
- java打印插件_java c/s项目中有没有好用的打印插件?
- 如何用阿里云服务器建立一个wordpress网站?
- ios 怎么判断字符串的字节数_如何用IOS判断字符串是不是纯数字
- 右手螺旋判断磁感应强度方向_弹簧左旋or右旋在功能和应用上有什么区别,如何判断左旋还是右旋...
- tcl之quartus 脚本学习 · 1 quartus tcl packages 介绍
- 计算机及应用学习顺序,自考计算机及应用专业经验谈
- Linux环境中的帮助命令有,Linux下的帮助命令
- PLOS_ONE_Genome-Wide Analysis of Long Noncoding RNA (lncRNA) Expression in Hepatoblastoma Tissues
- yii2 跨域请求配置_如何在SpringBoot应用中实现跨域访问资源和消息通信?