1、类的加载

image.png

1.加载

将.class文件从磁盘读到内存。

2.连接

2.1 验证: 验证字节码文件的正确性。
2.2 准备: 给类的静态变量分配内存,并赋予默认值。
2.3 解析: 类装载器装入类所引用的其它所有类。

3.初始化

为类的静态变量赋予正确的初始值,上述的准备阶段为静态变量赋予的是虚拟机默认的初始值,此处赋予的才是程序编写者为变量分配的真正的初始值,执行静态代码块。

4.使用

5.卸载

2、类加载器的种类

1. 启动类加载器(Bootstrap ClassLoader)

负责加载JRE的核心类库,如JRE目标下的rt.jar,charsets.jar等。

2. 扩展类加载器(Extension ClassLoader)

负责加载JRE扩展目录ext中jar类包。

3. 系统类加载器(Application ClassLoader)

负责加载ClassPath路径下的类包。

4. 用户自定义加载器(User ClassLoader)

负责加载用户自定义路径下的类包。

3、类加载机制

全盘负责委托机制
当A类中引用B类,那么除非特别指定B类的类加载器,否则就直接使用加载A类的类加载器加载B类。
双亲委派机制
指先委托父类加载器寻找目标类,在找不到的情况下再在自己的路径中查找并载入目标类。