本文共 1115 字,大约阅读时间需要 3 分钟。
类加载是指将类从磁盘或网络中读到jvm内存,交给执行引擎执行
java中类加载有4种(系统提供3种,自定义1种,因此也有说法称只有2种)
双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该.class文件,自己才会去加载这个.class
向上委托向下查找下面借用一下网图说明委派机制流程
不考虑我们自定义类加载器,首先会在AppClassLoader中检查是否加载过,如果有那就无需再加载了。如果没有,那么会拿到父加载器,然后调用父加载器的loadClass方法。父类中同理也会先检查自己是否已经加载过,如果没有再往上。注意这个类似递归的过程,直到到达Bootstrap classLoader之前,都是在检查是否加载过,并不会选择自己去加载。直到BootstrapClassLoader,已经没有父加载器了,这时候开始考虑自己是否能加载了,如果自己无法加载,会下沉到子加载器去加载,一直到最底层,如果没有任何加载器能加载,就会抛出ClassNotFoundException-防止加载同一个class文件
通过委托去向上面问一问,若加载过了,就不用再加载一遍。保证数据安全。 -保证核心class不能被篡改 通过委托方式,不会去篡改核心.class,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。转载地址:http://rugen.baihongyu.com/