文章目录
- 一、什么是类加载器
- 二、类加载器的应用场景
- 三、类加载器的分类
- 1、分类
- 2、启动类加载器
- 四、双亲委派机制
- 五、打破双亲委派机制
- 六、JDK9之后的类加载器
一、什么是类加载器
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。类加载器只参与加载过程总的字节码获取并加载到内存这一部分。
二、类加载器的应用场景
三、类加载器的分类
1、分类
- 类加载器分为两类,一类是Java代码中实现的,一类是Java虚拟机底层源码实现的。
- 类加载器的设计JDK8和8之后的版本差别较大,JDK8及之前的版本默认的类加载器有如下几种:
- 类加载器的详细信息可以通过Arthas classloader命令查看:classloader - 查看classloader的继承树,urls,类加载信息,使用classloader去getResource。
2、启动类加载器
- 启动类加载器(Boostrap ClassLoader)是由HotSpot虚拟机提供的、使用C ++编写的类加载器。
- 默认加载Java安装目录/jre/lib下的类文件,比如rt.jar,tool.jar,resource.jar等。
通过启动类加载器去加载用户jar包: - 放入jre/lib下进行扩展:不推荐,尽可能不要去更改JDK安装目录中的内容,会出现即使放进去由于文件名不匹配的问题也不会正常被加载。
- 使用参数进行扩展:推荐,使用-Xbootclasspath/a:jar包目录/jar包名,进行扩展。