类装载器

来源:互联网 发布:天猫和淘宝有什么区别 编辑:程序博客网 时间:2024/06/05 16:06
java 虚拟机中的所有类装载器采用具有父子关系的类型结构进行组织,在实例化每个类加载器对象时,
需要为其指定一个父类装载器对象或者默认采用系统类装载器为其父级类加载


BootStrap   jre/lib/rt.jar
ExtClassLoader  jre/lib/ext/*.jar
AppClassLoader、Systemclassloader  Classpath指定的所有jar或目录
当java虚拟机要加载一个类时,到底排除哪个类加载器去加载呢?
1,首先当前线程的类加载器去加载线程中的第一个类
2,如果类A中引用了类B,java虚拟机将使用加载类A的类装载器来加载类B
3,还可以直接调用classLoader.loadclass()方法来指定某个类加载器去加载某个类
每个类加载器加载类时,又先委托给其上级类加载器。
1,当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException,不是再去找发起者类加载器的儿子,因为没有getChild方法,即使有,那有多个儿子,找哪一个呢?
2,对着类加载器的层次结构图和委托加载原理,解释先前将ClassLoaderTest输出成jre/lib/ext目录下的itcast.jar包中后,运行结果为ExtClassLoader的原因。


0 0
原创粉丝点击