A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈兆辉 中级黑马   /  2014-9-23 10:46  /  701 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类加载器
1、将.class文件从内存中加载进来,并进行一系列的处理。
2、Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类加载器负责加载特定位置的类:
BootStrap,ExtClassLoader,AppClassLoader
3、类加载器也是java类,所以也需要被类加载器加载,显然必须由第一个类加载器不是java类,这就是BootStrap
4、Java虚拟机中的所有类加载器采用具有父子关系的树形结构图进行组织,在实例化每个类加载器对象时,需要
为其指定一个父级类加载器对象或者默认采用系统类加载器为其父类加载

类加载器的委托机制
当Java虚拟机要加载一个类时,排出哪个类加载器去加载呢?
1、首先当前线程的类加载器去加载线程中的第一个类。
2、如果类A中引用了类B,Java虚拟机将使用类A的类加载器来加载类B。
3、还可以直接调用ClassLodaer.loadClass()方法来指定某个类加载器去加载某个类。
每个类加载器加载类是,又委托给其上级类加载器(一直追溯到根节点的类加载器即BootStrap)。
1、当所有的父类加载器都没有加载到类时,回到发起者加载器,仍然加载不到,则抛出ClassNotFoundException,
不会回到发起者类加载器的儿子,因为没有getChild方法,即使有,也不知道找哪一个儿子。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马