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

【jvm】jvm整体结构(hotspot)

目录

        • 一、说明
        • 二、java代码的执行流程
        • 三、jvm的架构模型
          • 3.1 基于栈式架构的特点
          • 3.2 基于寄存器架构的特点

在这里插入图片描述

一、说明

  • 1.hotspot vm是目前市场上高性能虚拟机的代表作之一
  • 2.hotspot采用解释器与即时编译器并存的架构
  • 3.java虚拟机是用来解释运行字节码文件的,入口是字节码文件
  • 4.类装载子系统将字节码文件加载到内存中,生成一个大的class对象,这个过程中会涉及到加载、链接、初始化
  • 5.方法区和堆可以多个线程共享
  • 6.虚拟机栈、本地方法栈和程序计数器是每个线程独有一份
  • 7.执行引擎分为解释器、JIT及时编译器和垃圾回收器
  • 8.字节码加载到内存中后会用到解释器来解释运行,对于反复执行的热点代码会利用及时编译器提前编译出来
  • 9.java代码编译成class文件叫编译器的前端,及时编译器提前编译代码叫编译器的后端
  • 10.垃圾回收器实现垃圾的自动回收
  • 11.操作系统只能识别机器指令,字节码指令不等同于机器指令,字节码文件能够被解释执行需要执行引擎把字节码指令翻译成机器指令

二、java代码的执行流程

  • 1.java程序通过编译(这个过程有词法分析、语法分析、语法/抽象语法树、语义分析、注解抽象语法树和字节码生成器)生成字节码文件,编译过程有任何一个环节失败了都不能生成字节码文件,每个字节码文件对应着一个类
  • 2.字节码文件通过jvm虚拟机执行,经过类加载器、字节码校验器、执行引擎解释器翻译字节码(解释执行)和JIT编译器(编译执行)成为机器指令被操作系统执行
  • 3.主流的虚拟机都采用解释执行和编译执行并行的方式,解释器用来保证响应时间,逐行对字节码指令进行解释执行;JIT编译器针对于反复执行的热点代码再编译成机器指令,同时把这个机器指令放入方法区缓存起来,下次可以直接调用,保证执行的性能

三、jvm的架构模型

  • 1.java编译器输入的指令流基本上是一种基于栈的指令集架构,另一种指令集架构是基于寄存器的指令集架构
  • 2.hotspot虚拟机除了pc寄存器之外,没有其它寄存器,任何操作都需要入栈和出栈的操作,因此hotspot虚拟机是基于栈的指令集架构
  • 3.由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台cpu架构不同,因此不能设计为基于寄存器架构
  • 4.优点是跨平台,指令集小,编译器容易实现
  • 5.缺点是性能下降,实现同样的功能需要更多的指令
3.1 基于栈式架构的特点
  • 1.设计和实现更简单,适用于资源受限的系统
  • 2.避开了寄存器的分配难题:使用零地址指令方式分配
  • 3.指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现
  • 4.不需要硬件支持,可移植性更好,更好实现跨平台
3.2 基于寄存器架构的特点
  • 1.典型应用是x86的二进制指令集:例如传统的PC以及Android的Davlik虚拟机
  • 2.指令集架构则完全依赖硬件,可移植性差
  • 3.性能优秀和执行更高效
  • 4.花费更少的指令去完成一项操作
  • 5.大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集是以零地址指令为主

相关文章:

【jvm】jvm整体结构(hotspot)

目录 一、说明二、java代码的执行流程三、jvm的架构模型3.1 基于栈式架构的特点3.2 基于寄存器架构的特点 一、说明 1.hotspot vm是目前市场上高性能虚拟机的代表作之一 2.hotspot采用解释器与即时编译器并存的架构 3.java虚拟机是用来解释运行字节码文件的,入口是字…...

通达信波段选股公式,使用钱德动量摆动指标(CMO)

钱德动量摆动指标(CMO)是由图莎尔钱德发明的,取值范围在-100到100之间,是捕捉价格动量的技术指标。该指标计算近期涨幅之和与近期跌幅之和的差值,然后将计算结果除以同期所有价格波动的总和。本文的波段选股公式使用均线识别趋势,…...

家电维修小程序开发指南:从零搭建到上线

随着科技的发展和人们生活水平的提高,家电已经成为人们生活中不可或缺的一部分。然而,随之而来的是家电维修门店业务的繁忙和效率的考验。为了提高家电维修门店的效率和服务质量,建立一个便捷高效的小程序已成为必要的选择。 本文将介绍一个简…...

玩赚音视频开发高阶技术——FFmpeg

随着移动互联网的普及,人们对音视频内容的需求也不断增加。无论是社交媒体平台、电商平台还是在线教育,都离不开音视频的应用。这就为音视频开发人员提供了广阔的就业机会。根据这些年来网站上的音视频开发招聘需求来看,音视频开发人员的需求…...

python 变量赋值 修改之后 原值改变

python 是一种动态语言,因此变量的类型和值 在运行时均可改变。当我们将一个变量赋值给另一个变量时,实际上是将变量的引用地址传递给新的变量,这意 味着新旧变量将指向同一个位置。因此,在更改其中一个变量的值时,另一…...

拂袖一挥,zipfile秒列zip包内容

使用wxpython列出文件夹中的zip文件及内容 最近在做一个文件管理的小工具,需要列出选择的文件夹下的所有zip压缩文件,并在点击某个zip文件时能够显示其中的内容。为此我使用了wxpython来实现这个功能。 1. 导入需要的模块 首先导入程序需要的模块: import wx import os imp…...

InnoDB文件物理结构解析2 - FIL_PAGE_INDEX

1. 关于索引组织表 InnoDB使用的是索引组织表(IOT)的方式存储表记录,索引组织表以主键构建一个B-tree的数据结构来存储行记录,行记录存储在树的叶节点内。这与Oracle数据库是不同的,Oracle数据库默认创建的表是堆组织表(HOT),HOT…...

XML-BEANS compiled schema: Could not locate compiled schema resource 异常处理

使用poi5.2.2生成ppt,生成堆叠图,设置值时抛出异常 XML-BEANS compiled schema: Could not locate compiled schema resource org/apache/poi/schemas/ooxml/system/ooxml/stoverlappercent872etype.xsb (org.apache.poi.schemas.ooxml.system.ooxml.st…...

IOC容器 - Autofac

DI(依赖注入):DI(Dependency Injection)是一种实现松耦合和可测试性的软件设计模式。它的核心思想是将依赖关系的创建与管理交给外部容器,使得对象之间只依赖于接口而不直接依赖于具体实现类。通过依赖注入…...

用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

一、i18n的安装 这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。 npm install vue-…...

Vue3 :Pinia入门

Vue3 :Pinia入门 Date: May 11, 2023 Sum: Pinia概念、实现counter、getters、异步action、storeToRefs保持响应式解构 什么是Pinia Pinia 是 Vue 的专属状态管理库,可以实现跨组件或页面共享状态,是 vuex 状态管理工具的替代品&#xff0c…...

Java线程池的类型和使用

Java线程池的类型和使用 引言 在并发编程中,线程池是一种非常重要的工具,它可以实现线程的复用,避免频繁地创建新线程,从而提高程序的性能和效率。Java的并发库提供了丰富的线程池功能,本文将介绍Java线程池的类型和…...

QT的信号槽的四种写法和五种链接方式

目录 四种信号槽写法: 五种连接方式: 实例: 常见错误及改正: 错误1: 未连接信号与槽 错误2: 信号和槽参数不匹配 错误3: 未使用Q_OBJECT宏 错误4: 跨线程连接未处理 在Qt中,信号(Signal&#xff09…...

Vue+SpringBoot项目开发:后台登陆功能的实现(二)

写在开始:一个搬砖程序员的随缘记录文章目录 一、SpringBoot项目的搭建二、数据库配置1、新建数据库2、新建用户表 三、SpringBoot项目的配置 一、SpringBoot项目的搭建 项目搭建传送门:从零开始,SpringBoot项目快速搭建 二、数据库配置 1、新建数据库…...

arcgis pro 3.0.2 安装及 geemap

arcgis pro 3.0.2 安装及 geemap arcgis pro 3.0.2 安装 arcgis pro 3 版本已经很多了,在网上找到资源就可以进行安装 需要注意的是:有的文件破解文件缺少,导致破解不成功。 能够新建地图就是成功了! geemap安装 1.需要进行环…...

oracle插入多表(insert all/first)

1、建测试表 CREATE TABLE EDW_INT (AGMT_NO VARCHAR2(40 BYTE) NOT NULL,AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,NEED_REPAY_INT NUMBER(22,2),CURR_PERIOD NUMBER(4) NOT NULL ); CREATE TABLE EDW_INT_1 (…...

工业以太网交换机-SCALANCE X200 环网组态

1.概述 SCALANCE X200 系列交换机自从2004年8月推入市场,当时交换机只能接入环网,不能做环网管理器。在各个工业现场得到了广泛的应用。2007年5月发布了X200系列新的硬件版本平台,普通交换机可以用HSR(高速冗余)方法做…...

利用 Splashtop Enterprise 改善公司的网络安全

在我们日益数字化的世界中,对强有力的网络安全措施的需求从未像现在这样迫切。随着组织扩大其数字足迹并采用远程办公解决方案,他们面临着一系列不断变化的挑战。 威胁行为者不断寻找利用漏洞的新方法,这使得企业保持领先地位至关重要。俗话…...

mqbroker.cmd闪退(mqnamesrv.cmd能正常启动)

解决: 用户目录下面store文件(如:C:\Users\Administrator\store或C:\Users\你的用户名\store),删除文件里面所有文件,再次启动即可。...

LeetCode--HOT100题(26)

目录 题目描述:142. 环形链表 II(中等)题目接口解题思路代码 PS: 题目描述:142. 环形链表 II(中等) 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...