Java类加载器(Class Loader)的加载过程

67 阅读1分钟

Java类加载器(Class Loader)的加载过程一般包括三个步骤:加载(Loading)、连接(Linking)和初始化(Initialization)。具体来说:

加载:通过类的全限定名(Fully Qualified Name)获取类的二进制字节流,并将其存放在方法区(Method Area)的运行时常量池中。

连接:连接过程包括验证(Verification)、准备(Preparation)和解析(Resolution)三个步骤。

验证:验证字节流是否符合Java语言规范和JVM规范要求,防止恶意代码被加载和执行。

准备:为类的静态变量分配内存,并将其初始化为默认值。

解析:将符号引用转换为直接引用,主要是将类、方法、字段等符号引用转换为内存地址。

初始化:执行类的初始化方法(),包括对静态变量的显式赋值和静态代码块的执行等。只有当对类进行初始化时,才会触发其父类和接口的初始化。
Java类加载器是按照一定的委派机制进行工作的,即当一个类需要被加载时,首先由其父类加载器进行加载,如果父类加载器不能完成加载任务,则由子类加载器进行加载。最终,如果所有的父类加载器都不能完成加载任务,则抛出ClassNotFoundException异常。类加载器的委派机制保证了Java虚拟机中所有的类都能够被正确地加载,并且避免了类的重复加载。