Java 虚拟机 - 类加载器


JVM 以动态方式管理类和接口的加载、链接和初始化过程。在加载过程中,JVM 会找到类的二进制表示形式并创建它。

在链接过程中,加载的类被组合到JVM的运行时状态,以便它们可以在初始化阶段执行。JVM基本上使用存储在运行时常量池中的符号表来进行链接过程。初始化包括实际执行链接的类

装载机的类型

BootStrap类加载器位于类加载器层次结构顶部。它加载 JRE 的lib目录中的标准 JDK 类。

扩展类加载器位于类加载器层次结构的中间,是引导类加载器的直接子级,并加载 JRE 的 lib\ext 目录中的类

应用程序类加载器位于类加载器层次结构的底部,并且是应用程序类加载器的直接子级。它加载CLASSPATH ENV变量指定的 jar 和类。

链接

链接过程包括以下三个步骤 -

验证- 这是由字节码验证程序完成的,以确保生成的 .class 文件(字节码)有效。如果不是,则会抛出错误并且链接过程停止。

准备- 内存分配给类的所有静态变量,并使用默认值初始化它们。

解决方案- 所有符号内存引用都替换为原始引用。为了实现这一点,需要使用类方法区的运行时常量内存中的符号表。

初始化

这是类加载过程的最后阶段。静态变量被赋予原始值并执行静态块。