千家信息网

JVM的体系结构是什么

发表于:2024-09-26 作者:千家信息网编辑
千家信息网最后更新 2024年09月26日,JVM的体系结构是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是JVM呢?虚拟机是物理机的软件实现。Java是用WORA(编写
千家信息网最后更新 2024年09月26日JVM的体系结构是什么

JVM的体系结构是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是JVM呢?

虚拟机是物理机的软件实现。Java是用WORA(编写一次运行到任何地方)的概念开发的,它在VM上运行。编译器将Java文件编译成Java .class文件,然后将.class文件输入JVM, JVM加载并执行类文件。下面是JVM的架构图。

JVM是如何工作的?

如图所示,JVM分为三个主要子系统:

  1. 类加载器子系统

  2. 运行时数据区

  3. 执行引擎

1. 类加载器子系统

Java的动态类加载功能由类加载器子系统处理。它装载的链接。在运行时而不是编译时首次引用类时初始化类文件。

1.1 加载

类将由该组件加载。引导类加载器、扩展类加载器和应用程序类加载器是有助于实现这一目标的三个类加载器。

  1. 引导类加载器 - 负责从引导类路径加载类,除了rt.jar什么也没有。这个加载程序将获得最高优先级。

  2. 扩展类加载器 - 负责加载ext文件夹**(jre\lib)**中的类。

  3. 应用程序类加载器 -负责加载应用程序级类路径、所述环境变量的路径等。

上述类加载器在加载类文件时将遵循委托层次结构算法。

1.2 链接
  1. 验证 - 字节码验证器将验证生成的字节码是否正确,如果验证失败,我们将得到验证错误。

  2. 准备 - 内存将为所有静态变量分配默认值。

  3. 解析 - 所有符号内存引用将被来自方法区域的原始引用所替换。

1.3 初始化

这是类加载的最后阶段;在这里,所有静态变量都将被赋初始值,并且静态块也会被执行。

2. 运行时数据区

运行时数据区被分为五个主要组件:

  1. 方法区 - 所有类级数据都将存储在这里,包括静态变量。每个JVM只有一个方法区,它是资源共享的。

  2. -所有对象及其对应的实例变量和数组都将存储在这里。每个JVM也仅有一个堆。由于方法区和堆被多个线程共享内存,因此存储的数据不是线程安全的。

  3. -每个线程将创建一个单独的运行时栈。每个方法调用都会在栈内存中生成一个条目,称为栈帧。所有本地变量都将在栈内存中创建。栈区域是线程安全的,因为它不是内存共享的。

    栈区域被分为三个部分:

    1. 局部变量数组 - 与方法相关,涉及到局部变量以及相应的值都将存储在这里。

    2. 操作数堆栈 -如果需要执行任何中间操作,操作数堆栈充当运行时工作区来执行操作。

    3. 帧数据 - 所有与方法对应的符号都存储在这里。在任何异常情况下,catch块信息都将保存在帧数据中。

  4. PC寄存器 - 每个线程将有单独的PC寄存器,以保持当前执行指令的地址一旦指令执行,PC寄存器能顺利地更新到下一条指令。

  5. 本地方法栈 - 本机方法栈保存着本地方法信息。对于每个线程,都将创建一个单独的本机方法栈。

3. 执行引擎

被分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐个执行。

  1. 解释器 - 解释器更快地解释字节码,但执行速度很慢。解释器的缺点是,当一个方法被多次调用时,每次都需要一个新的解释。

  2. JIT编译器

    - JIT编译器消除了解释器的缺点。执行引擎将在转换字节码时使用解释器的帮助,但是当它发现重复的代码时,它使用JIT编译器,JIT编译整个字节码并将其更改为本机代码。此本机代码将直接用于重复的方法调用,从而提高系统的性能。

    1. 中间代码生成器 - 生成中间代码

    2. 代码优化器 - 负责优化上面生成的中间代码

    3. 目标代码生成器 - 负责生成机器代码或本地代码

    4. 分析器 - 一个特殊的组件,负责寻找热点,即方法是否被多次调用。

  3. 垃圾收集器:收集和删除未引用的对象。可以通过调用 System.gc()触发垃圾收集,但不能保证执行。JVM的垃圾收集收集创建的对象。

Java本地接口(JNI): JNI将与本地方法库交互,并提供执行引擎所需的本地库。

本机方法库: 这是执行引擎所需的本机库的集合。

看完上述内容,你们掌握JVM的体系结构是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

方法 代码 运行 变量 数据 字节 引擎 文件 编译 解释 内存 线程 本机 生成 解释器 存储 验证 子系统 程序 编译器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云服务器 vps 区别 广州四楚网络技术有限公司 临沂达尼亚网络技术 网络安全知识手抄报内容资料 福建服务器电源哪种好 电商平台软件开发资金 数据库闪退技术 大学生学习网络安全教育的意义 学习什么网络技术可以自己开店 苹果手机和安卓游戏服务器不同步 乐享网络技术有限公司怎么样 数据库附加出现错误怎么办 油库网络安全 网络科技公司与网络技术公司 思科网络技术教学 上海大规模软件开发技巧 免费网络安全知识题库 有关网络安全的多项选择题 辽阳网络安全培训 网络安全应急处置表述 转发功能的数据库设计 东营安卓软件开发解决方案 广州斑马网络技术有限公司 电力行业网络安全标准清单 松江区应用软件开发项目 艾尔战记组队连接不上服务器 杰奇数据库进不去 关于软件开发的培训记录 北京中联加互联网科技 数据库删除之后ID
0