ClassLoader的主要职责就是负责加载各种class文件到JVM中,ClassLoader是一个抽象的class,给定一个class的二进制文件名,ClassLoader会尝试加载并且在JVM中生成构成这个类的各个数据结构,然后使其分布在JVM对应的内存区域中。
类的加载过程一般分为三个比较大的阶段,分别是加载阶段、连接阶段和初始化阶段。
加载阶段:主要负责查找并且加载类的二进制数据文件,其实是class文件。
连接阶段:连接阶段所做的工作比较多,细分的话还可以分为如下三个阶段。
1.验证:主要是确保类文件的正确性,比如class的版本,class文件的魔术因子是否正确。
2.准备:为类的静态变量分配内存,并且为其初始化默认值。
3.解析:把类中的符号引用转换为直接引用。
初始化阶段:为类的静态变量赋予正确的初始值(代码编写阶段给定的值)