黑马程序员_基础加强_类加载器
来源:互联网 发布:linux 僵尸进程 编辑:程序博客网 时间:2024/05/22 17:30
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
类加载器
系统默认三大类加载器
BootStrap(只有这个超类不是java类,是C++编写的 ,获取其名字的话为null)
ExtClassLoader
AppClassLoader
每个类都有自己的特定加载位置.如下图
类加载器的委托机制
当Java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢?
1.首先当前线程的类加载器去加载线程中的第一个类。
2.如果类A中引用了类B,Java虚拟机将使用加载类A的类装载器来加载类B。
3.还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。
每个类加载器加载类时,又先委托给其上级类加载器。
当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException.每个ClassLoader本身只能分别加载特定位置和目录中的类,但它们可以委托其他的类装载器去加载类,这就是类加载器的委托模式。类装载器一级级委托到BootStrap类加载器,当BootStrap无法加载当前所要加载的类时,然后才一级级回退到子孙类装载器去进行真正的加载。当回退到最初的类装载器时,如果它自己也不能完成类的装载,那就应报告ClassNotFoundException异常
有一道面试,能不能自己写个类叫java.lang.System.
写了这个类也加载不到,因为会根据委托机制 超类BootStrap 会加载System. (不过理论上我觉得自定义类加载器然后覆盖loadClass方法可以做到)
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- 黑马程序员_基础加强_类加载器
- 黑马程序员_基础加强(6) 类加载器
- 黑马程序员_基础加强(类加载器)
- 黑马程序员 java基础加强_类加载器
- 黑马程序员_<<基础加强---类加载器>>
- 【黑马程序员】java基础加强_类加载器
- 黑马程序员_ 黑马程序员_基础加强第二天——类加载器
- 黑马程序员_学习日记十六_基础加强之泛型、类加载器
- 黑马程序员_张孝祥_Java基础加强_类加载器
- 黑马程序员_基础加强之类加载器
- 黑马程序员_基础加强
- 黑马程序员_基础加强
- 黑马程序员-java基础加强_代理和类加载器
- 黑马程序员_Java基础加强(下)_类加载器,代理_28
- 黑马程序员_基础加强_枚举
- 黑马程序员_基础加强_反射
- 黑马程序员_基础加强_注解
- 黑马程序员_基础加强_代理
- UML---statechart diagram
- 关于在做绕开SafeSEH的一个实验时(章节:11.6)一个神奇的事情
- python判断字符串
- Fatal signal 11 (SIGSEGV) at 0x00000048 (code=1)
- proc/sys/net/ipv4/下各项的意义
- 黑马程序员_基础加强_类加载器
- 黑马程序员----多线程3
- mybatis学习 from : http://blog.csdn.net/fairyhawk/article/details/8617549
- poj.2299
- 苹果iOS 8最值得期待的十大特性:支持移动支付
- sql where 1=1和 0=1 的作用
- 解析阿里巴巴为什么选择赴美上市
- java设计模式(行为型)之迭代器模式
- 简要解析JavaBean.