什么是JVM

article/2025/10/26 18:25:47

JVM 即 Java Virtual Machine,中文名为 Java虚拟机。

一般情况下

  • C/C++ 程序,编译成二进制文件后,就可以直接执行了;
  • Java 需要使用 javac 编译成 .class 文件,还需要使用 Java 命令去主动执行它。JVM 就是识别 .class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数。

Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的。而且有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。Java 跨平台的意义在于一次编译,处处运行。而C/C++程序则需要对应不同的平台、架构分别编译成二进制文件。 现在的一些 JVM 的扩展语言,比如 Clojure、JRuby、Groovy 等,编译到最后都是 .class 文件,Java 语言的维护者,只需要控制好 JVM 这个解析器,就可以将这些扩展语言无缝的运行在 JVM 之上了。

从官网截取几张图来理解 JVM:

JVM JRE JDK的关系

JVM不能单独搞定 class 的执行,它还需要一个基本的类库,比如怎么操作文件、怎么连接网络等。JVM加上这些基础类库,就组成
了 Java 的运行时环境,也就是我们常说的 JRE(Java Runtime Environment)。

另外Java的开发者非常慷慨的实现了一些开发的工具,比如 javac、java、jar 等,是 Java 开发的核心。JRE加上这些工具就组成了 JDK(Java Development Kit))。

JVM 分块概述

  • 运行时数据区 (Runtime Data Areas):分为五大区域,方法区(Method Area)、堆(Heap)、虚拟机栈(Virtual Machine Stacks)、程序寄存器(Program Counter Registers)、本地方法栈(Native Method Stacks)
  • 类加载器 (ClassLoader):负责加载程序中的类和接口
  • 执行引擎 (Execution Engine):通过类装载器装载的,被分配到JVM的运行时数据区的字节码会被执行引擎执行
  • 垃圾收集 (Garbage Collect): 自动管理内存并进行垃圾回收

JVM 的不同实现

广义上来讲,JVM 是一种规范,Java发展的过程中产生了很多 VM 实现,我们现在最常用的 HotSpot VM。

下面表格是目前常见的 JVM 实现

虚拟机名称介绍
HotSpotOracle JDK和OpenJDK都使用HotSpot VM的相同核心
JRockitJRockit 也属 Oracle,目前为止 Oracle 一直在推进与 HotSpot 融合互补(大致上是在HotSpot的基础上,移植JRockit的优秀特性)
Azul Zulu由Azul Systems根据HostPot为基础改进的高性能低延迟的JVM(最初针对专有硬件Vega系统,2010年发布了Zing VM面向通用x86平台)
OpenJ9是IBM开发的高度模块化的JVM,目前已经捐献给Eclipse基金会
GraalVM基于HotSpot / OpenJDK,它具有多语言功能,可以透明地混合和匹配支持的语言。

更多的JVM实现方案请查看 List of Java virtual machines - Wikipedia


http://chatgpt.dhexx.cn/article/BPMCJolU.shtml

相关文章

JVM详解——什么是JVM、JVM优点

JVM详解——什么是JVM、JVM优点 最近在学习Java,经常在书中看到JVM这三个字母,那到底什么是JVM呢? 并且JVM的知识在Java面试中也是非常受面试官青睐的知识点,那对于JVM我们到底要掌握哪些呢? 1、JVM概念 JVM是Jav…

一键禁用Win10自动更新,联想官方出品!!

对于Win10系统的强制更新,真的是是又爱又恨,更新是为了解决电脑系统存在的安全风险以及加入一些新功能,但经常性的开机或者关机都要更新配置,遇到大更新还需要花费很长的等待时间,更加可气的是还会出现更新失败的风险。…

关于禁止win10自动更新的方法:

关于禁止win10自动更新的方法: 1、winr键 输入 services.msc 进去Windows服务管理界面,并且找到Windows update双击进去 在常规中选择禁用,在恢复中选择无操作 2、winr 输入gpedit.msc 回车进入一下界面 在管理模板-windows组件 -window…

禁止windows更新唤醒计算机,windows10睡眠被自动更新唤醒的解决方法

一位用户反馈自己的windows10系统电脑在睡眠状态下总会被自动唤醒,感觉非常烦恼。后来发现每次win10系统开始自动更新操作系统的时候本来睡眠的电脑就会被自动唤醒。那么,我们该如何阻止其唤醒睡眠中的电脑呢?接下来,就随小编一起…

四步教你彻底关闭Win10自动更新

目录 一、禁用Windows Update服务 二、在组策略里关闭Win10自动更新相关服务 三、禁用任务计划里边的Win10自动更新 ​编辑四、在注册表中关闭Win10自动更新 一、禁用Windows Update服务 winR调出运行 >> services.msc >> Windows Update >> …

关于 Win 10 彻底禁用自动更新

Win 10 彻底禁用自动更新 在键盘上按 [ Win R ] 键 ,输入 services.msc 点击确定 。 双击 [ Windows Update ] 。启动类型选择 [ 禁用 ] ,单击 [ 停止 ] 。 点击 [ 恢复 ] ,第一次失败选择 [ 无操作 ] ,然后点击 [ 应用 ] 、[ 确…

Win10禁止更新设备驱动的几种方式

方法一:修改组策略 按下开始菜单并输入 gpedit.msc 搜索打开编辑组策略。 依次展开 计算机配置 → 管理模板 →Windows 组件 →Windows 更新 ; 找到并双击打开 Windows 更新不包括驱动程序 ; 将 未配置 或者 已禁用 改成 已启用 &#xf…

win10禁止chrome自动更新

win10禁止谷歌chrome自动更新 1.进入谷歌安装目录 C:\Users\Administrator\AppData\Local\Google 2.修改update权限 3.修改完成后提示: x

关闭Win10自动更新工具

一、工具下载: 关闭或开启Win10自动更新.EXEhttps://box.lenovo.com/l/t5dQKH 二、支持的操作系统:Windows 10 32位/64位 三、工具介绍:关闭或开启Win10系统的自动更新,涵盖多种版本系统,同时适用于常规方法不能关闭的…

win10怎么更新显卡驱动_如何禁止win10自动更新显卡驱动

在我们使用Win10纯净版的电脑时,经常会遇到电脑玩游戏变的很卡了,本来是优化好的驱动但是显卡驱动被系统自动更新了,那么如何解决这个问题呢?今天小编就给大家介绍下如何禁止win10自动更新显卡驱动。 以下是具体步骤: 1、桌面搜索框中输入并打开“编辑组策略” 在开始菜单…

Win10禁止Nvidia显卡驱动程序自动更新

Win10禁止Nvidia显卡驱动程序自动更新 1、打开设备管理器2、找到设备的类GUID3、WinR运行,调出运行框,输入“gpedit.msc”打开组策略4、输入类GUID 原文链接 1、打开设备管理器 键盘同时按住winx,再按m键,即可调出设备管理器。找…

用批处理文件阻止win10强制更新

win10更新下载的位置win10更新进程隐藏窗口运行和提升执行权限实现反复运行和开机自启 win10这个商业巨头微软的最新之作,以流氓行径著称,尤其是它的自动更新最受诟病。用户无权选择是否下载和安装更新。你选择不更新,他就在后台下载&#x…

禁止计算机更新,彻底禁止win10自动更新方法

现在基本每个小伙伴都用上Windows10的电脑,Windows10每隔一段时间会进行更新补丁,这个时候显得格外烦恼,很多用户都想要关掉,借助一些小工具来实现,但往往会发现,自动更新就像打不死的小强,不管…

彻底禁止win10更新的锅

背景:tonight,和往常一样,就在打开vmware的一瞬间……突然弹出下面这个令人懵逼致死的图: 百度搜索一通,众说纷纭,发现竟然还是win10系统的锅。 下面开始解决问题,直接上图: 这1903版…

彻底永久禁止Win10自动更新工具Windows Update Blocker v1.6 汉化版

你是否已经被一开机关机就自动更新的电脑系统折磨疯了,这还不算啥当你更新了最新版本还有可能出现各种BUG,甚至蓝屏黑屏不得不退回之前的版本。 以往的Windows10系统我们还可以通过禁止更新服务,设置一些本地组策略来禁止Windows系统的更新&…

Windows10彻底禁止更新

1. 【此电脑】--》【管理】--》【服务和应用程序】--》【服务】--》【Windows Update】,【启动类型】选择“禁用” 2. 编辑组策略 【win】【R】打开命令行,输入“gpedit.msc” 打开本地组策略(打开失败请看附录),【管…

treeSelect树组件设置父节点禁用

前言: 项目开发中需求方提了这样一个需求:下拉框数据是树形结构,但父节点禁止点选,只能点击子节点。毫无疑问,选用的是 ant design vue 组件库的 treeSelect 组件。但该组件默认每一级节点都可以进行选择,…

如何通过递归找父节点或子节点详解

前言:如何通过递归去查询父节点或子节点,相信大家在平常肯定会遇到这样的需求,这一章我们就好好研究下如何用递归去找。 目录 一、递归找父节点或子节点 二、创建一张表关系表保存上面的关系 三、递归查询父节点或子节点核心代码 四、演示…

如何获取el-tree中所有节点的父节点

<el-tree ref"tree" :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>import { throttle } from lodashexport default {data() {return {data: [{label: 一级 1,value: 1,childr…

DOM(三):节点操作——获取父子兄节点(查)、添加和删除元素节点

一、节点之间的层级&#xff1a;父子兄 节点主要 有父子兄关系 1.父节点操作 语法&#xff1a;子节点.parentNode&#xff0c;得到的是一个元素不是集合 比如我选了一个类名叫zzy的元素 var zzy document.querySelector(.zzy);那么要获取zzy 的父节点&#xff0c;只需要zz…