类的加载过程、类的加载器以及双亲委派模型

类的加载过程

一、类的加载过程

三步:加载;链接;初始化

二、加载

☞JVM查找字节码文件(class),并创建java.lang.Class对象的过程
☞具体表现如图:
类的加载过程、类的加载器以及双亲委派模型_第1张图片

三、链接

☞三个阶段:验证、准备、解析
☞验证:确保被加载的字节码文件满足JVM规范,不会造成安全错误
准备:为类的静态成员分配内存,并设置默认初始值
解析:将类的二进制数据中的符号引用替换为直接引用(内存地址

四、初始化

☞只对stastic修饰的变量或语句进行初始化

五 、类的加载器

类的加载过程、类的加载器以及双亲委派模型_第2张图片

六、双亲委派模型

(1)过程:

  1. 当前类加载器(API)从自己已经加载的类中查询是否此类已经加载。如果加载返回原来已经加载的类
  2. 如果没有找到,委托父类加载器,父类重复1操作
  3. 如果启动类加载器也查找失败,其尝试加载,加载失败通知Ext尝试加载,继续失败,通知App尝试加载,又失败,抛出ClassNotFoundException异常

(2)优点:
a.安全性:避免用户自己编写的类动态替换JAVA一些核心类
b.避免重复加载:由于相同class文件被不同类加载器会得到不同的两个类
(3)作用:
任意一个类都需要它自身和加载它的类加载器确立其JVM中的唯一性,类随它的类加载器一起具备了带有优先级的层次关系。

你可能感兴趣的:(类的加载过程、类的加载器以及双亲委派模型)