类的加载机制是指将类的字节码文件加载到内存中,并在运行时创建类的对象的过程。Java 类的加载机制遵循以下三个步骤:
-
加载(Loading) : 加载是类加载的第一个阶段。在这个阶段,Java 虚拟机(JVM)会根据类的全限定名(包括包名)来查找并加载类的字节码文件。类的字节码可以来自文件系统、网络,或者其他来源。加载的类字节码会被存储在方法区中,并在运行时创建对应的
java.lang.Class对象,表示这个类。 -
链接(Linking) : 链接是类加载的第二个阶段,分为三个步骤:验证、准备、和解析。
- 验证(Verification):确保类的字节码满足 Java 虚拟机的安全和语义要求,防止恶意代码被加载。
- 准备(Preparation):为类的静态变量分配内存空间,并设置默认值。
- 解析(Resolution):将符号引用(例如类名、方法名)解析为直接引用(直接指向内存地址),以便能正确访问到目标类或方法。
-
初始化(Initialization) : 初始化是类加载的最后一个阶段。在这个阶段,JVM会执行类的初始化代码,包括静态变量的赋值和静态代码块的执行。只有当类被主动使用时才会进行初始化,包括以下几种情况:
- 创建类的实例对象
- 访问类的静态变量
- 调用类的静态方法
- 使用反射访问类