【JVM】JVM简介

文章目录

  • 🌴简介
  • 🌲JVM发展史
    • [🌸Sun Classic VM](#🌸Sun Classic VM)
    • [🌸Exact VM](#🌸Exact VM)
    • [🌸HotSpot VM](#🌸HotSpot VM)
    • 🌸JRockit
    • [🌸J9 JVM](#🌸J9 JVM)
    • [Taobao JVM(国产研发)](#Taobao JVM(国产研发))
  • [🌳JVM 运行流程](#🌳JVM 运行流程)
  • ⭕总结

🌴简介

JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。

虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。

常见的虚拟机:JVM、VMwave、Virtual Box。

JVM 和其他两个虚拟机的区别:

  1. VMwave与VirtualBox是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器;
  2. JVM则是通过软件模拟Java字节码的指令集,JVM中只是主要保留了PC寄存器,其他的寄存器都进行了裁剪。

JVM 是一台被定制过的现实当中不存在的计算机

🌲JVM发展史

🌸Sun Classic VM

早在1996年Java1.0版本的时候,Sun公司发不了一款名为Sun Classic vm的java虚拟机,它同时也是世界上第一款商业java虚拟机,jdk1.4 时完全被淘汰。

这款虚拟机内部只提供解释器。

如果使用JIT编译器,就需要进行外挂。但是一旦使用了JIT编译器,JIT就会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合工作。

现在Hotspot内置了此虚拟机;

🌸Exact VM

为了解决上一个虚拟机问题,jdk1.2时,sun提供了此虚拟机。

Exact 具备现代高性能虚拟机的雏形,包含了以下功能:

热点探测(将热点代码编译为字节码加速程序执行);

编译器与解析器混合工作模式。

只在Solaris平台短暂使用,其他平台上还是 classic vm

只是奈何英雄气短,终被Hotspot虚拟机替换。

🌸HotSpot VM

HotSpot 历史

  1. 最初由一家名为"Longview Technologies"的小公司设计;
  2. 1997年,此公司被Sun收购;2009年,Sun公司被甲骨文收购。
  3. JDK1.3时,HotSpot VM成为默认虚拟机
    目前 HotSpot 占用绝对的市场地位,称霸武林。

不管是现在仍在广泛使用JDK6,还是使用比较多的JDK8中,默认的虚拟机都是HotSpot;

Sun/Oracle JDK和OpenJDK的默认虚拟机。从服务器、桌面到移动端、嵌入式都有应用。

名称中的HotSpot指的就是它的热点代码探测技术。它能通过计数器找到最具编译价值的代码,触发即时编译(JIT)或栈上替换;通过编译器与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。

🌸JRockit

JRockit 是专注于服务器端应用,目前在HotSpot的基础上,移植JRockit的优秀特性。

它可以不太关注程序的启动速度,因此JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后执行;

大量的行业基准测试显示,JRockit JVM是世界上最快的JVM。

使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70%)和硬件成本的减少(达50%);

  • 优势:全面的Java运行时解决方案组合。

JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务、军事指挥、电信网络的需要;

MissionControl服务套件,它是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具;2008,BEA被Oracle收购。

Oracle表达了整合两大优秀虚拟机的工作,大致在JDK8中完成。整合的方式是在HotSpot的基础上,移植JRockit的优秀特性。

🌸J9 JVM

全称:IBM Technology for Java Virtual Machine,简称IT4J,内部代号:J9。

市场定位于HotSpot接近,服务器端、桌面应用、嵌入式等多用途JVM,广泛用于IBM的各种Java产品

目前,有影响力的三大商用虚拟机之一,也号称是世界上最快的Java虚拟机(在IBM自己的产品上稳定);

2017年左右,IBM发布了开源 J9 VM,命名 OpenJ9,交给Eclipse基金会管理,也称为Eclipse

OpenJ9。

Taobao JVM(国产研发)

由 AliJVM 团队发布。阿里,国内使用Java最强大的公司,覆盖云计算、金融、物流、电商等众多领域,需要解决高并发、高可用、分布式的复合问题。有大量的开源产品。

基于OpenJDK 开发了自己的定制版本AlibabaJDK,简称AJDK。是整个阿里JAVA体系的基石;基于OpenJDK HotSpot JVM发布的国内第一个优化、深度定制且开源的高性能服务器版Java虚拟机,它具有以下特点:

  • 创新的GCIH(GC invisible heap)技术实现了off-heap,即将生命周期较长的Java对象从heap中移到heap之外,并且GC不能管理GCIH内部的Java对象,以此达到降低GC的回收评率和提升GC的回收效率的目的

  • GCIH中的对象还能够在多个Java虚拟机进程中实现共享。

  • 使用crc32指令实现JVM intrinsic降低JNI的调用开销;

  • PMU hardware的Java profiling tool和诊断协助功能;

  • 针对大数据场景的ZenGC。

taobao JVM应用在阿里产品上性能高,硬件严重依赖intel的cpu,损失了兼容性,但提高了性能,目前已经在淘宝、天猫上线,把Oracle官方JVM版本全部替换了

以上的各种 JVM 版本,比如 HotSpot 和 J9 JVM,都可以看做是不同厂商实现 JVM 产品的具体实现,而它们(JVM)产品的实现必须要符合《Java虚拟机规范》,《Java虚拟机规范》是 Oracle 发布 Java 领域最重要和最权威的著作,它完整且详细的描述了 JVM 的各个组成部分

🌳JVM 运行流程

程序在执行之前先要把java代码转换成字节码(class文件),JVM 首先需要把字节码通过一定的方式类加载器(ClassLoader) 把文件加载到内存中 运行时数据区(Runtime Data Area) ,而字节码文件是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine)将字节码翻译成底层系统指令再交由CPU去执行,而这个过程中需要调用其他语言的接口 本地库接口(Native Interface) 来实现整个程序的功能,这就是这4个主要组成部分的职责与功能

总的来看, JVM 主要通过分为以下 4 个部分,来执行 Java 程序的,它们分别是:

  • 类加载器(ClassLoader)

  • 运行时数据区(Runtime Data Area)

  • 执行引擎(Execution Engine)

  • 本地库接口(Native Interface)

⭕总结

感谢大家的阅读,希望得到大家的批评指正,和大家一起进步,与君共勉!

相关推荐
间彧9 分钟前
RedisTemplate介绍与使用
java·redis
icecreamstorm10 分钟前
JDBC数据库连接池
java·mysql
毕设源码柳学姐10 分钟前
计算机毕业设计Java医学生在线学习平台系统 基于 Java 的医学生在线学习平台设计与开发 Java 医学在线教育学习系统的设计与实现
java·学习·课程设计
程序无bug11 分钟前
5年Java开发经验,面试挂在MySQL InnoDB上!大厂究竟多看重MySQL?
java·后端
lixn13 分钟前
Java集合中不同的toArray方法该怎么选择
java·jvm
康闯13 分钟前
Docker 部署emberstack/sftp 镜像
java·docker·容器
Java中文社群19 分钟前
面试官:如何实现企业级MCP分布式部署?
java·后端·面试
小地瓜重新去华容道工作38 分钟前
【QT】实现应用程序启动画面
java·数据库·qt
Joker—H1 小时前
【Java】JUC并发(线程的方法、多线程的同步并发)
java·开发语言·经验分享·idea
Shan12051 小时前
经典排序算法之希尔排序
java·算法·排序算法