【jvm】jvm整体结构(hotspot)

news/2024/12/19 6:40:36/

目录

        • 一、说明
        • 二、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.ppmy.cn/news/1013860.html

相关文章

自动驾驶传感器选型

360的场景,避免有盲区,长距离 Lidar(激光雷达) 典型特点一圈一圈的,轮廓和很高的位置精度 禾赛的机械雷达 速腾的固态雷达 固态雷达是车规级的,车规级的意思是可以装到量产车上 Radar(毫米…

ADS Momentum学习笔记

ADS Momentum的简介 ADS Layout界面仿真采用的方法主要是Momentum(矩量法)。 Momentum的特点 Momentum是高级设计系统(ADS)的重要组成部分,它提供了设计现代通信系统的电磁仿真。它可以用来计算一般平面电路的S参数…

【Docker】Windows下docker环境搭建及解决使用非官方终端时的连接问题

目录 背景 Windows Docker 安装 安装docker toolbox cmder 解决cmder 连接失败问题 资料获取方法 背景 时常有容器方面的需求,经常构建调试导致测试环境有些混乱,所以想在本地构建一套环境,镜像调试稳定后再放到测试环境中。 Windows …

基于java房源出租信息系统设计与实现

摘 要 近些年来在一线城市的房子需求量在逐步递增,其中租房子和出租房子的需求业务不断增加。那么租房对于我们一线二线城市来说是一个非常大,而且具有经济提升能力的业务场景。那么信息技术在此行业的加持早已是变得炉火纯青,能够让租房和出…

Python Scapy 详解

基本介绍 我曾经写过一篇关于Scapy使用的文章,但是那篇文章已经是数年前发布的了。而计算机技术发展是爆炸性的,我在发布那篇文章的时候,我常用的 Python 版本是python 2.7,而知道我现在发出这篇文章的时候,其最新版已…

sigmoid ReLU 等激活函数总结

sigmoid ReLU sigoid和ReLU对比 1.sigmoid有梯度消失问题:当sigmoid的输出非常接近0或者1时,区域的梯度几乎为0,而ReLU在正区间的梯度总为1。如果Sigmoid没有正确初始化,它可能在正区间得到几乎为0的梯度。使模型无法有效训练。 …

鸿蒙继续开发

控件的封装一共有三种方法,我们之前用的那种内部封装只是其中一种,用的最多的应该是外部封装,我首先在外部创建一个文件夹,叫component,然后在里面创建一个ets的文件,将写好的组件直接粘贴进去,…

【CSS】CSS 选择器

CSS 选择器 1.基础选择器 1.1 元素选择器 语法:标签名{...} 元素选择器会选中对应标签名的HTML元素,例如:p{...},div{...},span{...}等 1.2 类选择器 语法:.类名{...} 类选择器会选中class属性为指定…