精讲 JVM架构体系介绍

每个Java开发人员都知道字节码将由JRE(Java Runtime Environment)执行。但是许多人并不知道JRE是Java虚拟机(JVM)的实现,它可以分析字节码,解释代码并执行它。作为开发人员,了解JVM的体系结构非常重要,因为它使我们能够更高效地编写代码。

通过优锐课的jvm分享,在本文中,我们将更深入地了解Java中的JVM体系结构以及JVM的不同组件。分享给大家参考学习。

什么是JVM?

虚拟机是物理机的软件实现。Java是根据WORA(可在任何地方写入一次)的概念开发的,可在VM上运行。编译器将Java文件编译为Java .class文件,然后将该.class文件输入到JVM中,JVM会加载并执行该类文件。下图是JVM的体系结构图。

JVM体系结构图

JVM如何工作?

如上面的架构图所示,JVM分为三个主要子系统:
1.类加载器子系统
2.运行时数据区
3.执行引擎

1.类加载器子系统
Java的动态类加载功能由类加载器子系统处理。它加载链接,并在运行时(而非编译时)首次引用类时初始化类文件。

1.1加载
类将由该组件加载。引导类装入器、扩展类装入器和应用程序类装入器是有助于实现它的三个类装入器。

1.引导程序类加载器–负责从引导类路径加载类,除了rt.jar此加载程序将获得最高优先级。
2.扩展类加载器–负责加载ext文件夹中的类
3.应用程序类加载器–负责加载应用程序级类路径、提到的环境变量路径等。
在加载类文件时,上面的类加载器将遵循委托层次算法。

1.2 链接
1.验证 –字节码验证器将验证生成的字节码是否正确,如果验证失败,我们将收到验证错误。
2.准备-对于所有静态变量,将使用默认值分配和分配内存。
3.解决-所有符号存储引用都被方法区域中的原始引用替换。

1.3初始化
这是类加载的最后阶段;此处,所有静态变量将被分配原始值,并执行静态块。

  1. 运行时数据区
    运行时数据区分为五个主要部分:

1..方法区域?– 所有类级别的数据都将存储在这里,包括静态变量。每个JVM只有一个方法区域,它是共享资源。
2.堆区– 所有对象及其对应的实例变量和数组将存储在此处。 每个JVM还有一个堆区。由于“方法”和“堆”区域共享多个线程的内存,因此存储的数据不是线程安全的。
3.堆栈区域?– 对于每个线程,将创建一个单独的运行时堆栈。对于每个方法调用,将在堆栈存储器中创建一个条目,称为堆栈帧。所有局部变量都将在堆栈存储器中创建。堆栈区域不是共享资源,因此是线程安全的。 堆栈框架分为三个子实体:

1.局部变量数组– 与该方法相关的涉及多少局部变量,并且相应的值将存储在此处。
2.操作数栈?–如果需要执行任何中间操作,则操作数堆栈充当执行该操作的运行时工作区。
3.框架数据?– 与该方法相对应的所有符号都存储在此处。 在任何例外情况下,捕获块信息都将保留在帧数据中。
4.PC寄存器?– 每个线程将具有单独的PC寄存器,一旦执行该指令,将保存当前执行指令的地址,PC寄存器将用下一条指令更新。
5.本机方法堆栈– 本机方法堆栈保存本机方法信息。对于每个线程,将创建一个单独的本机方法堆栈。

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

1.解释器?– 解释器解释字节码的速度较快,但执行速度较慢。解释器的缺点是,当多次调用一种方法时,每次都需要新的解释。
2.JIT编译器?– JIT编译器消除了解释器的缺点。执行引擎将使用解释器的帮助来转换字节码,但是当重复的代码时,它将使用JIT编译器,该编译器将编译整个字节码并将其更改为本地代码。此本地代码将直接用于重复的方法调用,从而提高系统的能。

1.中间代码生成器?– 生成中间代码
2.代码优化器?– 负责优化上面生成的中间代码
3.目标代码生成器?– 负责生成机器代码或本机
4.Profiler?– 一个特殊的组件,负责查找热点,即是否多次调用该方法。
3.垃圾收集器: 收集并删除未引用的对象。可以通过调用System.gc()来触发垃圾回收,但是不能保证执行。JVM的垃圾收集收集创建的对象。
Java本机接口(JNI): JNI将与本机方法库进行交互,并提供执行引擎所需的本机库。

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

喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
?> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。?
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货

原文地址:https://blog.51cto.com/14634606/2466891

时间: 2024-08-30 16:44:31

精讲 JVM架构体系介绍的相关文章

入门ABP——多层架构体系介绍

一.ABP遵循DDD(领域驱动设计)的原则 ? 展现层(Presentation):提供一个用户界面,实现用户交互操作.? 应用层(Application):进行展现层与领域层之间的协调,协调业务对象来执行特定的应用程序的任务.它不包含业务逻辑. ? 领域层(Domain):包括业务对象和业务规则,这是应用程序的核心层. ? 基础设施层(Infrastructure):提供通用技术来支持更高的层.例如基础设施层的仓储(Repository)可通过 ORM 来实现数据库交互.根据实际需要,可能会有

计算机网络原理精讲--第一章基本介绍

1.1 基本概念 局域网:覆盖范围小.自己花钱购买设备.带宽固定.自己维护.100米内.带宽 10M 100M 1000M Internet:由ISP组成.自己的机房.对网民提供访问Internet连接 广域网:距离远.花钱租带宽 带宽:用户到ISP(运营商)之间的带宽,不同ISP之间带宽不一定等于用户购买的带宽 数据包:内容.源地址和目标地址组成 数据帧:内容.源地址和目标地址.当前跳所在机器的Mac和下一跳机器的Mac组成 1.2 OSI参考模型对网络排错指导 1.物理层故障 查看连接状态

Webpack + React全栈工程架构项目实战精讲

详情请交流  QQ  709639943 01.Webpack + React全栈工程架构项目实战精讲 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

Java并发编程核心知识体系精讲

第1章 开宗明义[不看错过一个亿]本章一连串设问:为什么学并发编程?学并发编程痛点?谁适合学习本课?本课程包含内容和亮点?首先4大个理由告诉你为什么要学,其实源于JD岗位要求就不得不服了.其次5个痛点+12个亮点,是否说服你要死磕Java并发编程呢?... 第2章 跨越第一座山“线程八大核心”[适用于纵观全貌]八大核心-序章.从本章开始将带你攻克并发编程领域的“第一座大山”:多线程八大核心. 第3章 核心1:实现多线程的正确姿势[解读官方文档,够权威]相信很多小伙伴经常在各大技术博客或者论坛甚至

Java并发编程核心知识体系精讲 完整版

第1章 开宗明义[不看错过一个亿]本章一连串设问:为什么学并发编程?学并发编程痛点?谁适合学习本课?本课程包含内容和亮点?首先4大个理由告诉你为什么要学,其实源于JD岗位要求就不得不服了.其次5个痛点+12个亮点,是否说服你要死磕Java并发编程呢?... 第2章 跨越第一座山“线程八大核心”[适用于纵观全貌]八大核心-序章.从本章开始将带你攻克并发编程领域的“第一座大山”:多线程八大核心. 第3章 核心1:实现多线程的正确姿势[解读官方文档,够权威]相信很多小伙伴经常在各大技术博客或者论坛甚至

Hibernate入门精讲

学习Hibernate ,我们首先要知道为什么要学习它?它有什么好处?也就是我们为什么要学习框架技术? 还要知道    什么是Hibernate?    为什么要使用Hibernate?    Hibernate的配置文件的作用是什么?          Hibernate映射文件的作用是什么?     Hibernate持久化对象的状态有哪些? 现在我先上面的问题解决了. 一.我们为什么要学习框架技术? 1.框架技术有哪些? 在Java开发中,我们经常使用Struts.Hibernate和Sp

Spark全面精讲视频_Spark2.0视频

Spark全面精讲(基于Spark2版本+含Spark调优+超多案例) 课程观看地址:http://www.xuetuwuyou.com/course/149 课程出自学途无忧网:http://www.xuetuwuyou.com/ 课程分五个阶段,共115课时! 第一阶段 Spark内核深度剖析 第00节课-课程特色和学习方式 第一节课-Spark概述(四大特性) 第二节课-Spark入门 第三节课-什么是RDD? 第四节课-spark架构 第五节课-linux环境准备(虚拟机,linux)

RocketMQ核心技术精讲与高并发抗压实战

第1章 课程介绍为什么掌握RocketMQ消息中间件技术对于跳槽,晋级如此重要?学习RocketMQ技术,为什么首选这门课程?电商平台双11高并发场景下是如何抗压的?MQ部分的落地是如何做的?这章讲重点为你解答这些疑惑 1-1 课前必读(不看会错过一个亿) 1-2 课程导学 试看第2章 RocketMQ初探门径本章主要带着小伙伴一起了解Apache RocketMQ 顶级开源消息中间件的整体介绍.概念模型与源码包编译安装部署,控制台使用.让小伙伴们对RocketMQ有一个初步的认识! 2-1 本

RocketMQ核心技术精讲与高并发抗压实战(最新完整)

课程目录:第1章 课程介绍为什么掌握RocketMQ消息中间件技术对于跳槽,晋级如此重要?学习RocketMQ技术,为什么首选这门课程?电商平台双11高并发场景下是如何抗压的?MQ部分的落地是如何做的?这章讲重点为你解答这些疑惑 1-1 课前必读(不看会错过一个亿)1-2 课程导学 试看第2章 RocketMQ初探门径本章主要带着小伙伴一起了解Apache RocketMQ 顶级开源消息中间件的整体介绍.概念模型与源码包编译安装部署,控制台使用.让小伙伴们对RocketMQ有一个初步的认识! 2