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

你能谈一下JVM的主要组成部分吗?

JDK的JRE的区别作为一个Java开发,我相信每个人都知道。但是很多人却不知道JRE是Java虚拟机的实现。它可以分析字节码、解释代码然后执行它。我们作为开发人员,了解JVM的体系结构非常重要。它可以指导我们去写出性能良好的代码。能够很好的去分析性能问题。接下来带领大家来学习JVM的体系结构和它的组成部分。

我们看上面的体系图,里面的东西虽然有点多看起来很累,我们先别去看细节,我们就先关注三个最外围的部分:

  • ClassLoader子系统
  • 运行时数据区
  • 执行引擎

类加载器

当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析、运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制。JVM 虚拟机执行 class 字节码的过程可以分为七个阶段:加载、验证、准备、解析、初始化、使用、卸载。

运行时数据区

「运行时数据区」也可以叫做是「虚拟机内存结构」我们通常叫的比较多的还是JVM虚拟机内存结构。它指 JVM 运行时会把它管理的内存划分成若干个不同的数据区域 ,简单的说就是不同的数据放在不同的地方。共分为五个部分:方法区、堆、虚拟机栈、程序计数器、本地方法栈。

虚拟机栈程序计数器是线程私有的,而方法区是线程共享的区域。

执行引擎

我们最终代码是要运行的,这部分工作就是由执行引擎来完成。它会把分配给运行时数据区的字节码交给执行引擎来执行。执行引擎则会读取字节码并一段一段的执行它。

Java是一门半解释半编译型语言,所以执行引擎又分为了解释器JIT编译器,解释器就是当Java虚拟机启动时根据预定义的规范把字节码翻译成对应的机器码逐行去解释执行。而JIT编译器是虚拟机将源代码直接编译成机器码。

http://www.jsqmd.com/news/346916/

相关文章:

  • 力扣hot100 - 101、对称二叉树
  • CF1061F Lost Root 题解 / 随机化 交互
  • spacedesk网络设置副屏 windows 不需要himi
  • 双桅杆起重机非线性建模与控制-EXP-整形控制-起重机
  • 力扣hot100 - 108、将有序数组转换为二叉搜索树
  • 【组合意义】ARC212C ABS Ball
  • iTerm2 的清屏命令
  • 2026国内最新最新电解电容企业top5推荐!广东广州等地优质电子配套服务商权威榜单发布,资质服务双优助力产业高效发展 - 品牌推荐2026
  • 基于深度学习的肺音分类算法研究
  • 道路场景行人检测及逆行行为识别研究-大数据深度学习算法毕设毕业设计项目PyQT
  • 2026年蓝海:珊瑚礁AI监测开发实战——软件测试从业者的机遇指南
  • Rancher 使用手册详解
  • 车辆换道LM-FVDM模型仿真数据可视化系统(LM-FVDM)-大数据深度学习算法毕设毕业设计项目pyqt
  • 2026年软件测试:驯化AI比优化算法更重要的深层解析
  • 2.5 期末游记
  • 别急着修 Bug——从《第一个错误的版本》聊算法里的工程直觉
  • 终极清单:2026年最值钱的太空软件认证
  • 如何通过AI销冠系统提升数字员工的销售效能?
  • 团体程序设计天梯赛-练习集 L2-036 网红点打卡攻略
  • 从BUG追踪到碳汇追踪:软件测试人转型蓝碳经济的3大黄金入口
  • 离线畅用,无网也能识别,良心到爆!
  • 【强化学习】动态规划算法 - 实践
  • 工作熟练后,你的核心竞争力从不是代码本身:很多人第一反应是“捂紧源码”,但这其实是最无效的自保方式:需要输出你 懂坑、懂优化、懂业务适配,或许你要跳出现在舒适区,找到更有价值的事
  • 互联网大厂Java面试:从分布式架构到安全技术核心解析
  • Python Elasticsearch 客户端使用详解
  • 当代码遇见宇宙射线:测试工程师必知的太空防护革命
  • Nicheformer 基础模型
  • 完整教程:仓颉语言 LinkedList 链表实现深度解析
  • 同花顺 app 设置技巧
  • Kotlin编程语言入门与常见问题