类加载器
来源:互联网 发布:行知实验小学怎么样 编辑:程序博客网 时间:2024/06/09 22:08
类加载器
1. 概念:将类加载过程中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,让应程序自己决定如何获取所需要的类,这个动作的实现称作是类加载器。
2. 作用:只用来实现类的加载动作,但是在java中不仅仅是这样。对于任意两个类,当两个类的类加载器不同的时候两个类 必然不相同。Equels(),intanceof()
双亲委派模型
3.虚拟机角度两种
启动类加载器
使用C++实现,是虚拟机的一部分
所有其他的类加载器
Java语言实现
4.开发者角度三种
(1)启动类加载器
负责将 Java_Home/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。
它无法被java程序直接引用,用户在编写自定义类加载器的时候,需要把加载请求委派给引导类加载器,那直接使用null代替既可。
(2)扩展类加载器
ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将Java_Home /lib/ext或者由系统变量 java.ext.dir指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。
(3)应用程序类加载器
是由 Sun 的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。由于这个类加载器是ClassLoader中的getSystemClassLoader()方法的返回值,因此一般称为系统(System)加载器。
1、类加载器的双亲委派模型
通过组合的方式而不是通过继承,除了启动类加载器其他类均有父类加载器
工作过程:
类加载器收到了类加载的请求,就会直接委派给父亲类加载器去完成,每一个层次的加载器都是如此,因此,所有的加载请求最终都应该传送到顶层的启动类加载器中。父类加载器反馈自己无法加载这个请求时,子类才会尝试自己加载。
保证了java程序的稳定运作,Java类随着它的类加载器一起具备了一种带有优先级的层次关系。
2、破坏双亲委派模型
线程上下文类加载器,逆向使用双亲委派模型,所有涉及到SPI的加载动作基本上都是采用这个方式eg:JBDC;
- 加载、类加载、类加载器
- 类加载机制及类加载器加载Class流程
- 类加载器---类加载器简介
- Java类加载器加载类顺序
- 类加载器---类加载机制
- Java类加载器加载类顺序
- Java类加载器加载类顺序
- Java类加载器加载类顺序
- 类加载器和类加载机制
- 使用类加载器加载配置文件
- 用类加载器加载配置文件
- 用类加载器加载配置文件
- 类加载器的加载机制
- 用java类加载器加载资源
- 扩展类加载器的加载问题
- java类加载器的加载顺序
- 使用类加载器加载配置文件
- Java 类加载器以及加载机制
- CUDA学习笔记05:Mem申请的所有方式
- office-word使用技巧——自动更正
- 自由幻想UI之背包
- 页面直接跳转到子页面/二级页面
- m到n 的和与重载的使用
- 类加载器
- Java/JDK 8 新特性1.8对于1.7做了哪些优化/改进
- 使用Java写的解释器(一)
- Android app必用的几种权限
- js两只手指控制div图片放大缩小功能(2)
- Qt5.9.1+VS2015环境搭建
- 在浏览器地址栏键入URL之后经历的过程
- html添加swf文件,设置背景透明
- HEVC率失真优化