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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于世德 中级黑马   /  2013-7-25 10:50  /  1515 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类加载器:Bootstrap---------->ExtClassLoader---------->AppClassLoader
jdk1.6.0_16\jre\lib\ext
java类加载器加载.class文件并经过处理后生成最后的字节码
每个类加载器负责加载特定位置的类
类加载器也是java类,显然必须有一个不是java类的类加载器,这个就是Bootstrap
ClassLoaderTest.class.getClassLoader().getClass().getName();//AppClassLoader
System.class.getClass();//null 说明System这个类是由Bootstrap加载的
自定义类加载器(挂接到AppClassLoader下)实现自定义特殊目录下class文件的加载,可以同时定义加载方式如加密、解密
类加载器的委托机制:
首先当前线程的类加载器(Thread类的setContextClassLoader方法)去加载线程中的第一个类
如果类A中引用了类B,java虚拟机将使用加载类A的类加载器去加载类B
还可以直接调用ClassLoader.loadClass()来指定某个类加载器去加载某个类
每个类加载器加载类时,又会先委托给其上级的类加载器(统一管理,避免出现重复加载一个class文件的情况)
当所有祖宗没有加载到类,回到发起者类加载器,还加载不到,则会抛ClassNotFound Exception

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

1 个回复

倒序浏览
支持一下,希望楼主能继续发帖,让我这种新人多学习学习,感谢楼主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马