EP211: How the JVM Works

EP211: How the JVM Works

📝

内容提要

JVM(Java虚拟机)在编译和运行Java代码之间的工作流程包括构建、加载、链接、初始化、内存管理和执行。编译器将源代码转为字节码,类加载器按需加载类,验证字节码的安全性,分配静态变量,最后通过解释器或JIT编译器执行代码,实现高效运行。

🎯

关键要点

  • 构建:javac将源代码编译为平台无关的字节码,存储为.class文件、JAR或模块。

  • 加载:类加载器按需加载类,使用父委托机制,Bootstrap处理核心JDK类,Platform覆盖扩展,System加载应用程序代码。

  • 链接:验证步骤检查字节码的安全性,准备分配静态字段的默认值,解析将符号引用转换为直接内存地址。

  • 初始化:静态变量被赋予实际值,静态初始化块执行,仅在类首次使用时发生。

  • 内存管理:堆和方法区在多个线程之间共享,JVM栈、PC寄存器和本地方法栈为每个线程创建,垃圾收集器回收未使用的堆内存。

  • 执行:解释器直接运行字节码,JIT编译器将多次调用的方法转换为本地机器代码并存储在代码缓存中。

  • 运行:程序在解释和JIT编译代码的混合下运行,实现快速启动和持续的高性能。

延伸问答

JVM的主要功能是什么?

JVM的主要功能是将Java源代码编译为字节码,并在运行时执行这些字节码,管理内存和类的加载。

JVM是如何加载类的?

JVM使用类加载器按需加载类,采用父委托机制,Bootstrap处理核心JDK类,Platform覆盖扩展,System加载应用程序代码。

JVM的内存管理是怎样的?

JVM的内存管理包括共享堆和方法区,线程各自拥有JVM栈、PC寄存器和本地方法栈,垃圾收集器负责回收未使用的堆内存。

JVM是如何执行字节码的?

JVM通过解释器直接运行字节码,并使用JIT编译器将多次调用的方法转换为本地机器代码以提高性能。

JVM的初始化过程包括哪些步骤?

初始化过程包括为静态变量赋值和执行静态初始化块,这些步骤仅在类首次使用时发生。

JVM的构建过程是怎样的?

构建过程由javac将源代码编译为平台无关的字节码,存储为.class文件、JAR或模块。

➡️

继续阅读