当前位置: 首页 > news >正文

【jvm系列-01】初识虚拟机与java虚拟机

初识虚拟机与java虚拟机

  • 一,虚拟机与java虚拟机
    • 1,虚拟机
    • 2,java虚拟机
    • 3,jvm整体结构图
    • 4,jvm的架构模型
    • 5,jvm的生命周期
    • 6,jvm的种类划分
      • 6.1,Sun Classic Vm
      • 6.2,Exact VM
      • 6.3,HotSpot虚拟机
      • 6.4,JRockit虚拟机

一,虚拟机与java虚拟机

1,虚拟机

所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。他是一款软件,用来执行一系列虚拟的计算机指令。虚拟机大概可以分为系统虚拟机程序虚拟机

  • Visual Box、VMware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。

  • 程序虚拟机的典型代表就是java虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令被 称为Java字节码指令。

2,java虚拟机

在这里插入图片描述

主要是用来执行java字节码的虚拟机计算机,拥有独立的运行机制,其运行的java字节码也不一定只能由java语言编译而成,其他语言只要遵循该虚拟机中的规范,也可以通过解析这些字节码文件来编译。

JVM平台的各种语言可以共享Java虚拟机带来的跨平台性,优秀的垃圾回收器,以及可靠的即时编译器。Java技术的核心就是Java虚拟机,名称为Java Virtual Machine,简称JVM。所有的Java程序都运行在Java虚拟机的内部。

java虚拟机的作用

java虚拟机就是二进制字节码的运行环境,主要负责装载字节码到其内部,解释或者编译为对应平台的机器指令执行,每一条Java指令,Java虚拟机规范中都有详细的定义。比如说如何取操作数,怎么处理操作数,把结果放到哪里等。

Java虚拟机的特点

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收机制

3,jvm整体结构图

上面说到java虚拟机的简称就是jvm,而这个HotSpot VM 是目前市面上高性能虚拟机的代表作之一,它主要是采用即时编译器和解释器保存的架构来实现,其整体的结构图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aP81TW8U-1678841200349)(img/1677429350694.png)]

把这幅图从上往下看,可以分为三层:

  • 第一层就是最上面这层,就是一些Class files,就是一些二进制的字节码文件,然后需要通过一个Class的类加载器进行一个文件的加载,将这些二进制文件加入到内存当中;

  • 第二层就是运行时数据区,就是通过这个类加载器加载进来的内存区域,里面主要有一些堆栈,方法区,程序计数器等等,并且在改层中,方法区和堆是属于公共区域,是线程共享的,而其他的栈和程序计数器,都是每个线程私有的;

  • 第三层就是这个执行引擎,主要有一些即时编译器,解释器和垃圾回收器。

4,jvm的架构模型

Java编译器输入的指令流主要有两种,一种是基于栈的指令集架构,另一种是基于寄存器的指令集架构。

基于栈架构的特点

  • 设计和实现更简单,适用于资源受限的系统,比如说嵌入式设备等
  • 避开了寄存器的分配难题,而是直接使用零地址指令方式分配,即不需要分配地址,直接操作值即可
  • 由于大部分执行过程时依赖栈,因此大部分是使用零地址指令,其指令集更小,易编译
  • 由于在栈中操作,不依赖硬件,可以直接在内存中操作,其可移植性好,可以更好的实现跨平台操作

基于寄存器架构的特点

  • 性能更加优秀,执行的效率更高,可以直接在高速缓存区中工作
  • 都是需要依赖于硬件,因此其可移植性差
  • 相对于基于栈操作,寄存器会花费更少的指令去完成一项工作
  • 寄存器架构指令往往是一,二,三地址指令,一级指令的含义就是存在一个地址和一个操作,二级指令就是两个地址和两个操作值,以此类推。

架构模型总结

为了解决java的跨平台性问题,Java指令是根据这个栈指令集来进行设计的。不同平台的CPU架构不同,所以不能设计为基于寄存器的。

相对而言,栈指令集的跨平台性会更好,并且其指令集小,但是其指令会更多,其性能相较于这个寄存器会更差。

5,jvm的生命周期

jvm的生命周期主要有启动,执行和停止三个部分组成。

虚拟机的启动

在java的官方规范中,Java虚拟机的启动是通过引导类的类加载器来创建初始类的,这个类是由虚拟机的具体指定实现的,即不同商家的虚拟机所决定。

虚拟机的执行

java虚拟机的主要任务就是执行java程序。在程序开始时java虚拟机就开始运行,程序结束时java虚拟机就停止。在执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。

虚拟机的退出

程序正常执行结束,或者遇到异常,或者操作系统出现错误这些都会让程序结束,除了这些之外,在调用Runtime或者System系统类的时候也会让这个虚拟机退出。除此之外,在使用JNI加载或者卸载java虚拟机的时候,java虚拟机也会出现退出的情况。

6,jvm的种类划分

6.1,Sun Classic Vm

在1996java1.0版本的时候,Sun公司发布了一款名为Sun Classic VM的Java虚拟机,他同时也是第一款商用的Java虚拟机,在JDK1.4版本的时候正式被淘汰。

在这款虚拟机中,只提供解释器而没有即时编译器,如果使用这种JIT即时编译器,就需要外挂,但是在使用这个即时编译器的时候,这个解释器就不能工作,从而解释器和这个编译器就不能协同的工作,因此这个款虚拟机被淘汰。

在这里插入图片描述

解释器和这个JIT即使编译器都可以认作是一个翻译器,并且在当今流行的HotSpot虚拟机中,这两种方式是一起协同工作的。解释器就是正常用来解释字节指令的机器,而这个即时编译器有着缓存热代码的作用,可以提升工作效率。

这两者最大的区别就是:解释器响应快,但是执行效率较低,就相当于步行,但是可以一直不停;而即时编译器是需要通过编译成机器指令的,因此需要一段时间就行等待,但是一旦编译通过,那么其执行效率就很高,相当于火车。这两种是通过合作的方式共存的,当JIT即使编译器处于这个等待的状态,那么就通过解释器来执行,反之则使用这个JIT即时编译器来执行。

6.2,Exact VM

为了解决解释器和即时编译器不能共用的问题,在jdk1.2的时候,Sum提供了这个Exact VM ,准确式内存管理,虚拟机可以知道内存中的某个位置的数据具体是什么类型。但是只在Solaris平台短暂使用,在其他平台还是使用的classic Vm

6.3,HotSpot虚拟机

现在主流的还是该款虚拟机,不管是目前比较火的Oracle JDK还是OpenJdk,HotSpot都是里面的默认的虚拟机。像这个方法区的概念,就是这个虚拟机独有的。

6.4,JRockit虚拟机

主要是注重于服务端的应用,他可以不用关注程序的启动速度,因此JRockit内部不包含解释器,全部代码都靠及时编译器来完成。据研究显示,该款虚拟机是全世界最快的虚拟机。

相关文章:

【jvm系列-01】初识虚拟机与java虚拟机

初识虚拟机与java虚拟机一,虚拟机与java虚拟机1,虚拟机2,java虚拟机3,jvm整体结构图4,jvm的架构模型5,jvm的生命周期6,jvm的种类划分6.1,Sun Classic Vm6.2,Exact VM6.3&…...

「Python 基础」数据库应用编程

Python 定义了一套 DB-API,任何数据库要连接到 Python,只需要提供符合 Python 标准的数据库驱动即可; 文章目录1. 连接 SQLite1. 建表、插入数据2. 查询数据2. 连接 MySQL1. 安装驱动2. 演示连接3. SQLAlchemy1. 安装2. DBSession3. add4. qu…...

一个nginx的小项目,不写代码,实现在局域网内访问其他电脑的网页

准备工作 下载nginx //官网 https://nginx.org/en/download.html //直接下载 https://nginx.org/download/nginx-1.23.3.zip解压 下载一个html项目,或者自己随便写一个 我是直接下载的,然后使用的是第一个01 https://gitee.com/StarPort/HTML_CSSTe…...

23.3.14打卡 2022年江西省大学生程序设计竞赛(正式赛)ABL

就写了签到, 其他题没写, 这场好像3题就银了 纪念一下3.14原粥率日 比赛链接:https://ac.nowcoder.com/acm/contest/43898 A题 Special Adjustment Method 题意 给出非负整数x, y, z 你可以让其中两个数字-1, 另外一个2, 使得x2y2z2x^2y^{2}z^{2}x2y2z2最大 题解 这题很容…...

用idea操作hbase数据库,并映射到hive

依赖条件:需要有Hadoop,hive,zookeeper,hbase环境映射:每一个在 Hive 表中的域都存在于 HBase 中,而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对…...

手机解锁方法:8个顶级的 Android 手机解锁软件

一般来说,太简单的密码是不安全的,所以我们设置一个安全的密码,可能会稍微复杂一点。然而,我们可能经常会忘记复杂的密码并锁定我们的 Android 智能手机。 8个顶级的 Android 手机解锁软件 如果您遇到过这种情况并且正在寻找一种…...

JVS快速开发平台2.1.7版本,列表页配置新增特性介绍

JVS 在3月份更新了2.1.7版本,本次更新涉及到很多方面,其中包括逻辑引擎、流程引擎、列表引擎、数据处理引擎、图表配置加工等。这里我们先介绍下列表页配置引擎扩展的相关内容,我们先来看看最后配置的列表页配置的效果1、列表页展示方面&…...

【华为机试真题详解 Python实现】去除多余空格【2023 Q1 | 100分】

文章目录 前言题目描述输入描述输出描述示例 1解题思路参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能…...

【SpringBoot项目实战+思维导图】瑞吉外卖⑤(新增套餐、套餐分页查询、删除套餐、短信发送、手机验证码登录)

文章目录新增套餐需求分析数据模型准备工作前端页面分析代码开发根据分类查询菜品功能实现功能测试保存套餐功能实现功能测试思维导图总结套餐分页查询需求分析前端页面分析代码开发基本信息查询问题分析功能完善功能测试思维导图总结删除套餐需求分析前端页面分析代码开发功能…...

OpenAI 发布GPT-4——全网抢先体验

OpenAI 发布GPT-4 最近 OpenAI 犹如开挂一般,上周才刚刚推出GPT-3.5-Turbo API,今天凌晨再次祭出GPT-4这个目前最先进的多模态预训练大模型。与上一代GPT3.5相比,GPT-4最大的飞跃是增加了识图能力,并且回答准确性也得到显著提高。…...

C++——多态

多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别:静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确…...

javaSE系列之类与对象

javaSE系列之类与方法什么是类类的定义书写事项什么是实例化this引用this的注意事项对象的初始化构造方法封装的概念访问限定符封装扩展之包static成员static的特性static的初始化代码块注意事项内部类1.实例内部类💗 💗 博客:小怡同学💗 &am…...

远程构建(命令、脚本构建)jenkins

在对应项目,开启远程构建开关添加API token系统设置调整用户权限获取crumbcurl调用构建 1、进入对应项目的设置页面:开启远程构建开关 2、 添加 API token:进入对应用户的设置页面 3、系统设置调整权限,如图 4、由于jenkins的安全…...

2023-03-15 ElasticSearch

ElasticSearch 1.Docker安装ElasticSearch 1.1. es及kibana下载 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2创建映射文件: mkdir -p /elasticsearch/configmkdir -p /elasticsearch/datamkdir -p /elasticsearch/plugins在config下执行 vim elasticsearch…...

指针和数组笔试题解析【下篇】

文章目录👁️6.指针笔试题👀6.1.试题(1)👀6.2.试题(2)👀6.3.试题(3)👀6.4.试题(4)👀6.5.试题(5&am…...

DHCP原理简析及交互实践

环境: os:centos7 dnsmasq:version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念: 1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用…...

用二极管、三极管和MOS管搭建逻辑门电路

文章目录1. 二极管(1)二极管与门(2)二极管或门2. 三极管(1)三极管非门(2)三极管与门(3)三极管或门(4)三极管与非门(5&…...

SpringBoot:手写一个 SpringBoot Starter

声明:原文作者:yuan_404 文章目录1. 说明2 . 编写启动器3 . 新建项目测试自己写的启动器1. 说明 启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库 命名归约: 官方命名&…...

【23】Verilog进阶 - 数位转换【实时处理 + 标志信号】

【初次尝试】VL32 非整数倍数据位宽转换24to128 1 理解题目含义 根据【模块端口】和【题目描述】本题的真实意思是比较清楚啦。但不可大意轻敌! (1)问题1:输出一直为0 猛然间发现计数值也为0,没有增加 去排查cnt的代码,很容易找到到问题,是cnt上电复位的逻辑写错了 …...

常见的HTTP状态码

一.2开头 200:响应成功; 204:响应成功,但是响应头没有数据; 206:部分响应成功,比如分片上传,断点续传; 二.3开头 301:永久重定向; 302&…...

动态代理·学习笔记

“嗨,阿米戈。” “你好,瑞希。” “今天我将向您解释一个非常有趣的新话题:动态代理”。 “Java 有几种方法可以改变特定类的功能……” “第一个方法,传承。” “更改类行为的最简单方法是创建一个继承原始(基)类的新类,并覆盖其方法。然后,使用派生类而不是原始…...

RAG技术新篇章:Modular RAG模块化架构如何引爆效率与效果?

本文深入解析了RAG技术的演进历程,从最初的Naive RAG到Advanced RAG,再到如今的Modular RAG,阐述了三者间的继承与发展关系。Modular RAG通过模块化设计和智能编排,实现了更高的灵活性和可扩展性。其核心在于Orchestration编排模块…...

开源项目依赖管理:从冲突解决到高效协作的实践指南

开源项目依赖管理:从冲突解决到高效协作的实践指南 【免费下载链接】IPED IPED Digital Forensic Tool. It is an open source software that can be used to process and analyze digital evidence, often seized at crime scenes by law enforcement or in a corp…...

推挽电路与图腾柱结构技术解析与应用

图腾柱与互补推挽电路的技术解析1. 推挽电路基础概念1.1 推挽电路基本原理推挽电路(Push-Pull)是一种功率放大电路结构,其核心设计思想是通过两个互补工作的晶体管交替导通,实现对输入信号的功率放大。典型推挽电路具有以下两个关键特性:强大…...

卡梅德生物技术快报|高亲和力 VHH 抗体的快速筛选:磁珠直接偶联液相法的技术实现

摘要针对传统方法难以实现高亲和力 VHH 抗体的快速筛选这一行业痛点,本文阐述了基于磁珠直接偶联的液相筛选法在高亲和力 VHH 抗体的快速筛选中的技术原理、核心实验步骤及应用优势。该方法通过碳化二亚胺法实现半抗原与磁珠的直接共价偶联,消除载体蛋白…...

OpenCore Legacy Patcher终极指南:从故障排除到高级配置优化

OpenCore Legacy Patcher终极指南:从故障排除到高级配置优化 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大的开源工具&am…...

别再乱存Token了!Laravel+jwt-auth安全实践指南(LocalStorage vs Cookie对比)

Laraveljwt-auth安全实践:Token存储方案深度解析与防御策略 在当今前后端分离的Web开发架构中,如何安全地存储和传输身份验证Token一直是开发者面临的棘手问题。许多团队在快速迭代过程中往往忽视了Token存储环节的安全设计,导致系统暴露在XS…...

DeepSeek-OCR-2性能对比测试:CPU与GPU推理全解析

DeepSeek-OCR-2性能对比测试:CPU与GPU推理全解析 本文对DeepSeek-OCR-2在不同硬件配置下的性能进行全面测试,为实际部署提供数据支撑和方案建议 1. 测试背景与目的 DeepSeek-OCR-2作为新一代文档识别模型,凭借其创新的视觉因果流技术&#x…...

手把手教你用LKS32MC07x配置无刷电机PWM:从互补波形到死区时间设置

手把手教你用LKS32MC07x配置无刷电机PWM:从互补波形到死区时间设置 第一次接触无刷电机驱动时,看着开发板上密密麻麻的MOS管和复杂的PWM波形图,我盯着示波器上跳动的信号整整发呆了半小时。直到把LKS32MC07x的参考手册翻到卷边,才…...

热处理设备如何影响紧固件可靠性?6月上海紧固件展解析

2026上海紧固件专业展(Fastener Expo Shanghai 2026)将于2026年6月24日至26日在国家会展中心(上海)举行。作为紧固件行业具有国际影响力的重要平台之一,本届展会将重点呈现制造工艺与装备升级对产品质量的深远影响。其…...