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

[5-01-01].第03节:JVM启航 - JVM架构

JVM学习大纲


一、JVM的整体架构:

1.1.整体架构概述:

  • 1.注意:方法区只有HotSpot虚拟机有,J9,JRockit都没有
  • 2.如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?
    • 类加载器
    • 执行引擎
      在这里插入图片描述

1.2.组成成员介绍:

成员1:类加载子系统

  • 核心组件类加载器,负责将字节码文件中的内容加载到内存中
    在这里插入图片描述

成员2:运行时数据区

  • 1.负责管理JVM使用到的内存,比如创建出来的对象、销毁对象、类的信息等等内容都会放在这块区域中
    在这里插入图片描述

  • 2.在众多的线程中:

    • 方法区和堆多个线程共享
    • 虚拟机栈,本地方法栈,程序计数器是每个线程独享

成员3:执行引擎

  • 1.包含了即时编译器、解释器、垃圾回收器,执行引擎使用解释器将字节码指令解释成机器码,使用即时编译器优化性能,使用垃圾回收器回收不再使用的对象
    在这里插入图片描述

  • 2.HotSpot VM是目前市面上高性能虚拟机的代表作之一,它采用解释器即时编译器并存的架构,性能较高

成员4:本地接口

  • 调用本地使用C/C++编译好的方法
    在这里插入图片描述
  • 本地方法在Java中声明时,都会带上native关键字,如下图所示
    在这里插入图片描述

1.3.处理字节码文件流程:

  • class文件(字节码文件)生成之后,后面的操作就需要jvm来负责了
    • 第1步:通过类加载子系统将字节码文件进行加载,然后对应到内存中,生成Class的对象
    • 第2步:在方法区中对一些静态变量进行初始化等操作
    • 第3步:到执行引擎中执行具体的字节码指令,在逐步执行指令的时候,会使用虚拟机栈、程序计数器、堆、本地方法栈等

1.4.内存结构详细图:

在这里插入图片描述


二、JVM的生命周期:

2.1.虚拟机的启动:

  • 1.Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类具体是哪个,是由虚拟机的具体实现指定的
    • 自定义的类是由系统类加载器加载的
    • Object类是由引导类加载器加载的

2.2.虚拟机的执行

  • 1.一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序
  • 2.程序开始执行时他才运行,程序结束时他就停止
  • 3.执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做 Java虚拟机的进程

2.3.虚拟机的退出:

  • 1.程序正常执行结束
  • 2.程序在执行过程中遇到了异常或错误而异常终止
  • 3.由于操作系统用现错误而导致Java虚拟机进程终止
  • 4.某线程调用Runtime类或system类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
  • 5.除此之外,JNI(Java Native Interface - 本地方法接口)规范描述了用JNI Invocation API来加载或卸载 Java虚拟机时,Java虚拟机的退出情况

三、后续学习:

  • 我们就依据这个架构图来依次学习各个部分的内容
    在这里插入图片描述

http://www.dtcms.com/a/569077.html

相关文章:

  • 2024CISCN ezjava复现
  • Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
  • JavaScript的Web APIs 入门到实战(day2):事件监听与交互实现,轻松实现网页交互效果(附练习巩固)
  • 网站建设难么深圳网站制作服
  • 使用vue Template version: 1.3.1时, 设置的env无法正常读取
  • HOT100题打卡第28天——位运算
  • EasyOCR的模型放在了哪里
  • 18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
  • 做购物网站哪个cms好用企业支付的网站开发费如何入帐
  • 怎样将自己做的网站给别人看微信小程序网站建设
  • 【软考】信息系统项目管理师-质量管理论文范文
  • (T24) 跨时钟域SI->Q path的latch选型
  • 学习记录记录记录记录
  • 【JAVA】基础(一)
  • Coze-AI智能体开发平台4-应用
  • day_06_06方法的参数值传递机制
  • 选用铜做电线的底层逻辑
  • 守护数据的最后一道防线:深入浅出TDE透明数据加密技术
  • Hadess零基础学习,如何管理通用Generic制品
  • 【数论】裴蜀定理与扩展欧几里得算法 (exgcd)
  • 新北区城乡建设局网站wordpress 瑜伽课程
  • 解读ffmpeg控制台输出
  • SQL Server 集群网络架构详解
  • php做视频网站源码上海建设网站公
  • 外国网站上做Taskvs2012网站开发环境
  • STM32的串口(上位机控制下位机)
  • Anthropic 经济指数报告:地理和企业人工智能采用的不均衡性
  • 美工免费素材网站淮南网格员招聘
  • 坐标系转换快速定位问题
  • ELK学习笔记