news 2026/4/18 3:36:55

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
你能谈一下JVM的主要组成部分吗?

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

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

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

类加载器

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

运行时数据区

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

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

执行引擎

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:25:28

Neo4j Cypher查询语言:大数据分析的利器

Neo4j Cypher查询语言:大数据分析的利器 关键词:Neo4j、Cypher、图数据库、大数据分析、图查询语言、图遍历、图算法 摘要:本文深入探讨Neo4j图数据库的核心查询语言Cypher,解析其在大数据分析中的独特优势。通过核心概念解析、算…

作者头像 李华
网站建设 2026/4/18 3:34:50

必读:用NFT存证你的开源代码贡献值

NFT技术如何重塑开源贡献值管理 在2026年软件测试领域,开源项目参与度激增,但贡献值认证与权益分配仍依赖中心化平台,易引发争议。NFT(非同质化通证)通过区块链技术,为代码贡献提供不可篡改的存证&#xf…

作者头像 李华
网站建设 2026/4/17 8:56:42

【 2025 年终总结】被推着走的一年,需要停下来思考

生活从不按计划 从 2025 年底开始规划,一直到 2026 年 2 月的一天深夜,我才真正开始动笔。第三年写年终总结—按四舍五入的算法,也算是工作的第三年。 回看 2024 年立下的 Flag,最接近“完成”的,竟然还是「持续输出博…

作者头像 李华
网站建设 2026/4/17 4:47:36

deepinV23文件管理器改造

目录 1. 概述2. 过程 2.1 下载源码2.2 安装依赖2.3 环境配置2.4 修改代码 2.4.1 文件管理器增加ctrld删除文件2.4.2 桌面增加ctrld删除文件2.4.3 桌面增加ctrlshiftn创建目录2.4.4 恢复悬浮和选中配色到v20.92.4.5 去掉回收站清空挂件 2.5 编译安装2.6 重登录测试 3. 总结4. 不…

作者头像 李华
网站建设 2026/4/17 16:24:13

从码农到太空农场AI设计师:我的跨域实验与2026公众号热度洞察

作为一名前软件测试工程师转型太空农场AI设计师,我亲历了技术领域的跨界融合。2026年,公众号内容生态正被AI深度重塑,软件测试从业者面临新机遇与挑战。本文将结合我的职业转型故事,解析当前热度最高的内容类型、驱动因素及实践策…

作者头像 李华