类加载就是把类的.class文件加载到内存得到类对象的过程
-
类加载5大过程
-
加载:把对应类的.class文件找到,读文件到内存中。
-
验证:.class的格式检查
-
准备:为静态变量(final 和static定义的变量)分配内存空间,初始化静态变量为默认值
-
解析:把符号引用转换为直接引用,因为这里类的信息已经被加载到内存了,所以这里会把原来通过全限定名引用的对象替换成对象内存的实际地址。
-
初始化:执行初始化静态块内容,并且为静态变量进行真正的赋值操作
-
-
类加载的时机
不是java程序一运行就加载,而是调用了这个类时,才去加载。
-
构造类的实例
-
调用类的静态属性或静态方法
-
调用类的子类
-
-
双亲委派模型
它指的是在类加载阶段的加载步骤找.class文件的具体过程。
具体的,主要涉及三个类加载器,当开始找.class文件时,请求依次向上传递,到达顶端后开始找,找不到则向下传递请求,直到最后一层找不到则抛出异常ClassNotFoundException。