首页 > 基础资料 博客日记

JVM的组成部分

2025-09-02 21:00:02基础资料围观58

文章JVM的组成部分分享给大家,欢迎收藏Java资料网,专注分享技术知识

我们先说说 JVM 是什么,Java Virtual Machine(Java 虚拟机)。我们可以把它理解成一个 "虚拟的计算机" —— 它不是真实的硬件设备,而是一段能运行 Java 字节码的程序。

如果 Java 代码是 "世界通用的食谱",那么 JVM 就是 "能看懂这份食谱的厨师"。不管是用 Windows 、Mac 还是 Linux,只要安装了对应平台的 JVM,就能把同一份 Java 字节码(.class 文件)"做" 出同样的效果。这也是 Java 能实现 "一次编写,到处运行Write Once, Run Anywhere)" 的核心秘密。

1、类加载子系统(ClassLoader Subsystem)

        (1) 定义:负责把 .class 文件加载到 JVM 内存中。

        (2) 主要步骤:

                 加载(Loading):从文件系统或网络中找到 class 文件,读进内存。

                 链接(Linking):验证(字节码是否安全)、准备(为类变量分配内存并设置默认值)、解析(将符号引用转为直接引用)。

                 初始化(Initialization):执行类变量的赋值操作和静态代码块。

        (3) 主要的类加载器:启动类加载器(Bootstrap)、扩展类加载器(Extension)、应用类加载器(Application)。

2、运行时数据区(Runtime Data Area)

        JVM 在 运行 Java 程序时使用的内存区域,可以分为:

        (1) 方法区(Method Area)

                ① 存储类相关信息(类的结构、方法、字段、常量池)。

                ② 在 HotSpot JVM 中,早期叫 永久代(PermGen),后期改为 元空间(Metaspace)

        (2) 堆(Heap)

                ① 存放所有对象实例。

                ② 是垃圾回收器(GC)的主要工作区域。

                ③ 通常分为 新生代(Young Generation)老年代(Old Generation)

        (3) Java 虚拟机栈(JVM Stack)

                ① 每个线程启动时都会创建一个栈。

                ② 用来存储方法调用时的 局部变量、操作数栈、返回地址 等信息。

                ③ 每次方法调用就是一个 栈帧

        (4) 本地方法栈(Native Method Stack)

                ① 与 JVM Stack 类似,但服务于 本地方法(Native Method)

                ② 通常是用 C/C++ 实现的。

        (5) 程序计数器(Program Counter, PC Register)

                ① 每个线程都有一个独立的程序计数器。

                ② 保存当前线程正在执行的字节码的地址。

3、执行引擎(Execution Engine)

        (1) 负责把字节码 解释/编译 为机器指令,交给底层操作系统执行。

        (2) 主要包括:

                ① 解释器:逐行解释执行字节码。

                ② JIT 编译器(Just-In-Time Compiler):将热点代码编译成本地机器码,提高执行效率。

                ③ 即时编译优化组件:对热点代码进行优化,例如方法内联、循环展开等。

4、本地方法接口(JNI, Java Native Interface)

        (1) 提供 Java 调用其他语言(如 C、C++)库的能力。

        (2) 通过 JNI,可以让 Java 程序访问底层操作系统或硬件功能。

我看有网友问 垃圾回收器 算不算JVM的一部分呢?垃圾回收 并不是 JVM 的 "组成模块",而是 JVM 的一项功能。不同 JVM 提供了不同的 GC 实现,比如 CMS、G1、ZGC 等。

真正的强者,不是不失败,而是善于从失败中吸取教训。-- 烟沙九洲


文章来源:https://www.cnblogs.com/yanshajiuzhou/p/19070685
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云