【jvm】jvm整体结构(hotspot)

news2024/10/6 8:39:58

目录

        • 一、说明
        • 二、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.大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集是以零地址指令为主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务技术栈(1.0)

微服务技术栈 认识微服务 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 优点: 架构简单部署成本低 缺点: 耦合度高 分布式架构 分布式架构:根据业务功能对系统进行拆分&#xff0c…

深度学习和OpenCV的对象检测(MobileNet SSD图像识别)

基于深度学习的对象检测时,我们主要分享以下三种主要的对象检测方法: Faster R-CNN(后期会来学习分享)你只看一次(YOLO,最新版本YOLO3,后期我们会分享)单发探测器(SSD,本节介绍,若你的电脑配置比较低,此方法比较适合R-CNN是使用深度学习进行物体检测的训练模型; 然而,…

新西兰跨境电商购物网站多语言翻译系统快速开发

搭建一个新西兰跨境电商购物网站的多语言翻译系统,可以按照以下步骤进行快速开发: 步骤1:确定需求和目标 首先,你需要明确你的网站需要支持哪些语言,并确定你想要实现的多语言翻译系统的具体功能和目标。 步骤2&…

unity如何手动更改脚本执行顺序

在Unity中,脚本的执行顺序是由脚本的执行顺序属性决定的。默认情况下,Unity根据脚本在项目中的加载顺序来确定它们的执行顺序。然而,你可以手动更改脚本的执行顺序,以下是一种方法: 在Unity编辑器中,选择你…

【云原生】kubectl命令的详解

目录 一、陈述式资源管理方式1.1基本查看命令查看版本信息查看资源对象简写查看集群信息配置kubectl自动补全node节点查看日志 1.3基本信息查看查看 master 节点状态查看命名空间查看default命名空间的所有资源创建命名空间app删除命名空间app在命名空间kube-public 创建副本控…

Unity背包系统与存档(附下载链接)

下载地址: https://download.csdn.net/download/qq_58804985/88184776 视频演示: 功能: 拖动物品在背包中自由移动,当物品拖动到其他物品上时,和其交换位置.基于EPPlus的背包数据与位置保存 原理: 给定一个道具池表格与一个背包表格 道具池表格负责存储所有道具的信息 背…

岩土工程监测仪器多通道振弦传感器信号转换器应用于铁路监测

岩土工程监测仪器多通道振弦传感器信号转换器应用于铁路监测 岩土工程监测是工程建设和运营过程中必不可少的环节,它主要是通过对地下水位、土体应力、变形、固结沉降等参数进行实时监测,以保证工程施工和运营的安全性和稳定性。而多通道振弦传感器信号…

JavaScript数据结构【进阶】

注:最后有面试挑战,看看自己掌握了吗 文章目录 使用 splice() 添加元素使用 slice() 复制数组元素使用展开运算符复制数组使用展开运算符合并数组使用 indexOf() 检查元素是否存在使用 for 循环遍历数组中的全部元素创建复杂的多维数组将键值对添加到对象…

阶段总结(linux基础)

目录 一、初始linux系统 二、基本操作命令 三、目录结构 四、文件及目录管理命令 查看文件内容 创建文件 五、用户与组管理 六、文件权限与压缩管理 七、磁盘管理 八、系统程序与进程管理 管理机制 文件系统损坏 grub引导故障 磁盘资源耗尽 程序与进程的区别 查…

Grafana V10 告警推送

最近项目建设完成,一个城域网项目,相关zabbix和grafana展示已经完,想了想,不想天天看平台去盯网络监控平台,索性对告警进行分类调整,增加告警的推送,和相关部门的提醒,其他部门看不懂…

绿盾用户使用看图软件每次都需要把图片解密之后才能打开查看,怎么才能不用这么麻烦打开就能看

环境: Win10专业版 绿盾控制台7.0 看图软件FastStone Image Viewer 问题描述: 绿盾用户使用看图软件FastStone Image Viewer每次都需要把图片解密之后才能打开查看,怎么才能不用这么麻烦打开就能看,用户说每次都需要把图片解密之后才能使用,实在是影响效率 解决方案…

4、长度最小的子数组

找到一个数组中,有多少个连续元素的和小于某个值,求出连续元素的长度的最小值。 滑动窗口法: 其本质也是快慢指针,一个指针指向窗口的起始位置,另一个指针指向窗口的终止位置。 1.定义快慢指针: 2.更新慢指…

css-3:什么是响应式设计?响应式的原理是什么?如何做?

1、响应式设计是什么? 响应式网站设计(Responsive WEB desgin)是一个网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的相应和调整。 描述响应式…

Unity 实现字幕打字效果

Text文本打字效果,TextMeshPro可以对应参考,差距不大,改改参数名就能用。改脚本原本被我集成到其他的程序集中,现在已经分离。 效果 实现功能 1.能够设置每行能够容纳的字数和允许的冗余 2.打字效果 3.每行打完上移 4.开头进入&…

项目实战 — 消息队列(5){统一硬盘操作}

前面已经使用数据库管理了交换机、绑定、队列,然后又使用了数据文件管理了消息。 那么,这里就创建一个类,讲之前的两个部分整合起来,对上层提供统一的一套接口,表示硬盘上存储的所有的类的信息。 /* * 用这个类来管理…

C++笔记之enum class和emun的区别

C笔记之enum class和emun的区别 code review! 代码,使用 enum class 的示例&#xff1a; #include <iostream>enum class Month { January, February, March, April, May, June, July, August, September, October, November, December };int main() {Month currentM…

龙迅LT8711H是Type-C/DP1.2转HDMI1.4芯片 -现货来了

1.概述 LT8711H是一款高性能Type-C / DP1.2至HDMI1.4转换器&#xff0c;旨在将USB Type-C源或DP1.2源连接至HDMI1.4接收器。 LT8711H集成了符合DP1.2的接收器和符合HDMI1.4的发送器。此外&#xff0c;还包括两个CC控制器&#xff0c;用于CC通信以实现DP Alt Mode和功率传输功…

Frida 编译(去特征)

Frida 编译&#xff08;去特征&#xff09; 编译最新版server编译往期版server更改特征使用定制库 hluwa本文引用&#xff1a; 本文环境&#xff1a; kali-linux-xfce 编译最新版server 第一步&#xff1a; 下载frida git clone --recurse-submodules https://github.com/fri…

Redis键值设计

1.1、优雅的key结构 Redis的Key虽然可以自定义&#xff0c;但最好遵循下面的几个最佳实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:[id]长度不超过44字节不包含特殊字符 例如&#xff1a;我们的登录业务&#xff0c;保存用户信息&#xff0c;其key可以…

模型训练技术指南

目录 引言 1. 模型训练的重要性 2. 数据预处理 3. 特征工程 4. 模型选择与评估 5. 参数调优 6. 模型集成 7. 过拟合与欠拟合 8. 模型保存与加载 9. 分布式训练与加速 10. 最佳实践与常见问题 引言 模型训练是机器学习领域中至关重要的一步&#xff0c;它决定了模型的…