Jvm系列-Jvm概述(一)

article/2025/10/26 18:33:16

目录

1,什么是JVM?

2,JVM跨平台及原理

3,JVM的分类

4,JVM的位置

5,JVM的体系结构

6,Java代码的执行流程

7,JVM的架构模型

8,JVM的生命周期

9,三大商业虚拟机


1,什么是JVM?

  • JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机。
  • jvm是运行在操作系统之上的,与硬件没有任何关系。

2,JVM跨平台及原理

  • 跨平台:由Java编写的程序可以在不同的操作系统上运行:一次编写,多处运行。
  • 原理:编译之后的字节码文件和平台无关,需要在不同的操作系统上安装一个对应版本的虚拟机(JVM) 

3,JVM的分类

  • 类加载子系统。
  • 运行时数据区 [ 我们核心关注这里 的栈、堆、方法区 ]。

  • 执行引擎(一般都是JIT编译器和解释器共存)

    • JIT编译器(主要影响性能):编译执行; 一般热点数据会进行二次编译,将字节码指令变成机器指令。将机器指令放在方法区缓存。

    • 解释器(负责响应时间,他的响应时间很快):逐行解释字节码。

4,JVM的位置

JVM位于操作系统上层,但是位于应用程序下层。

5,JVM的体系结构

  • 入口是编译好的字节码文件(编译器前端)-->经过类加载子系统(将我们的字节码加载到内存当中,生成一个class对象,中间经过三步:加载--->链接--->初始化)

  • 在内存中,多个对象共享内存的是方法区和堆区(多个线程共享区)。

  • Java虚拟机栈,本地方法栈,程序计数器每一个线程独有一份。

  • 执行引擎:解释器(解释运行),jit及时编译器(编译器后端),垃圾回收器三部分。

6,Java代码的执行流程

  •  高级语言翻译为机器指令,主要是由执行引擎完成的。
    • 解释器(解释运行,把字节码翻译为机器指令,主要负责翻编译器性能)。
    • jit及时编译器(编译器后端,主要是把热点代码缓存起来,主要负责编译器性能)组成执行引擎。

7,JVM的架构模型

Java编译器输入的指令流基本上是基于栈的指令集架构,另一种指令集架构是基于寄存器的指令集架构,两种架构之间的区别如下:

基于栈实现的指令集特点如下:

  • 设计和实现更加简单,适用于资源受限的系统。

  • 避开了寄存器额分配难题,使用零地址指令分配方式。

  • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器更加容易实现。

  • 不需要硬件支持,可移植性好,更好实现跨平台。

  • 基于栈的指令集:跨平台性,指令集小,指令多执行性能比寄存器差。

基于寄存器指令集的特点:

  • 典型的应用是x86二进制指令集,比如传统的pc以及android的davlik虚拟机。

  • 指令集架构完全依赖于硬件,可移植性差。

  • 性能优秀和执行更加高效。

  • 花费更少的指令去完成一项任务。

  • 在大部分情况下,基于寄存器的指令集往往都以一地址指令,二地址指令,三地址指令为主,而基于栈结构的指令集则以零地址为主。

小结:

由于扩平台式的设计,Java的指令集都是根据栈来设计的,不同的平台cpu架构不同,所以不能设计为基于寄存器的,优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

8,JVM的生命周期

  • 虚拟机的启动

    • Java虚拟机的启动是通过引导类加载器bootstrap class loader创建一个初始类initail calss来完成的,这个类是由虚拟机的具体实现指定的。

  • 虚拟机的执行:

    • 一个运行着的java虚拟机有着清晰的任务,执行java程序。

    • 程序开始执行虚拟机就运行,程序结束虚拟机就结束运行。

    • 执行一个java程序的时候,真真正正的在执行的是一个java虚拟机进程。

  • 虚拟机的停止:以下几种情况会退出虚拟机:

    • 程序正常执行结束。

    • 程序在运行过程中遇到错误或者异常而终止执行。

    • 由于操作系统发故障而导致虚拟机进程终止运行。

    • 某一个线程调用了Runtime类或者system类的exit方法,或者调用runtime类的halt方法,并且java安全管理器允许执行安全退出的方法。

9,三大商业虚拟机

  • Sun HotSpot

    • 提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。

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

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

    • 从服务器,桌面,到移动端,嵌入式都有应用。

  • BEA JRocket

    • 专注于服务端应用(JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后执行)。

    • Jrockit JVM 是世界上最快的jvm3. 2008年被oracle收购。

    • 专注于服务器端的应用。

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

  • iBM J9

    • 市场定位与hotspot接近,服务器端,桌面应用,嵌入式等。

    • 目前,是影响力最大的三大商业虚拟机之一。

    • 应用于IBM的各种Java产品。


 


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

相关文章

JVM的组成

Java Virtual Machine虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现,java虚拟机有自己完善的硬件架构,如处理器,堆栈,寄存器等,还具有相应的指令系统 一次编译&#xff…

JVM是什么

什么是JVM? 1、JVM是Java虚拟机,是用来执行Java字节码(二进制的形式)的虚拟机计算机。2、JVM是运行在操作系统之上的,与硬件没有任何关系。 Java的跨平台原理 跨平台:由Java编写的程序可以在不同的操作…

jdk、jre、jvm是什么?

JDK简介 JDK是Java Development Kit的缩写,是Java的开发工具包。 JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(JRE),Java工具(javac/java/jdb等&#xff0…

JVM运行原理详解

1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的。 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚…

JAVA—JVM详解

JAVA—JVM详解 一、JVM 1、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言…

什么是JVM?

说明:做java开发的几乎都知道jvm这个名词,但是由于jvm对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是jvm&…

JVM介绍(*)

一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

JVM01_概述、跨平台原理、分类、三大商业虚拟机

文章目录 ①. 什么是JVM?②. Java的跨平台及原理③. JVM的分类④. 三大商业虚拟机 ①. 什么是JVM? ①. JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机 ②. jvm是运行在操作系统之上的,与硬件没有任何关系 …

什么是JVM

JVM 即 Java Virtual Machine,中文名为 Java虚拟机。 一般情况下 C/C 程序,编译成二进制文件后,就可以直接执行了;Java 需要使用 javac 编译成 .class 文件,还需要使用 Java 命令去主动执行它。JVM 就是识别 .class …

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键,即可调出设备管理器。找…