🚀类加载过程是指在 Java 程序运行时,将类的字节码文件加载到内存中并转换为 Class 对象的过程。Java 类加载器负责加载类,其主要任务是在运行时查找和装载类文件,以生成对应的 Class 对象。
Java的类加载过程一般可以分为以下几个步骤:
1)加载(Loading):
通过类的全限定名来获取其二进制字节流,一般来自文件、网络等。加载阶段完成后,系统内存中就有了该类的Class对象的数据结构表示。
2)验证(Verification):
确保被加载的类的正确性,主要包括文件格式验证、元数据验证、字节码验证、符号引用验证等。
3)准备(Preparation):
为类的静态变量分配内存并设置默认初始值(零值)。
4)解析(Resolution):
将符号引用转换为直接引用的过程,主要包括将类、接口、字段和方法的符号引用解析为直接引用。
5)初始化(Initialization):
执行类的初始化方法(),初始化类的静态变量和静态代码块,这是类加载的最后一个阶段。
总结
📑双亲委派模型(Parent Delegation Model)是Java类加载机制的一种重要实现方式,它基于一个简单的原则:当一个类加载器收到类加载的请求时,它首先不会自己去尝试加载这个类,而是把请求委托给父类加载器去完成。这个过程是递归的,一直向上委托,直至顶层的启动类加载器。只有当父类加载器无法完成加载请求时,子类加载器才会尝试加载。
✅双亲委派模型的好处在于它能够保证Java核心库的类不会被自定义的类加载器所替代,从而确保Java核心库的安全性和一致性。这种机制也有助于防止类的重复加载,提高了系统的整体性能。