类加载器
1、 什么是类加载器?
专门负责加载类的命令/工具
ClassLoader
2、 JDK中自带了3个类加载器
- 启动类加载器(父加载):rt.jar
- 扩展类加载器(母加载器):ext/*.jar
- 应用类加载器:classpath中加载
-
注:启动类加载器(父加载)和扩展类加载器(母加载器)称为“双亲委派机制”
3、双亲委派机制
假设有这样一段代码:
String s = "abc";
代码在开始执行之前,会将所需要的类全部加载JVM中,通过类加载器加载,看到以上代码,类加载器会找到String.class文件,找到就加载,那么是如何加载的呢?
-
首先,通过“启动类加载器”加载。
-
注意:启动类加载器专门加载:E:\environment\jdk1.8.0_221\jre\lib
-
-
如果通过“启动类加载器”加载不到的时候,会通过“扩展加载器”加载。
-
注意:扩展类加载器专门加载:
E:\environment\jdk1.8.0_221\jre\lib\ext*.jar
-
-
如果通过“扩展类加载器”加载不到的时候,会通过“应用加载器”加载。
-
注意:应用类加载器专门加载:
计算机->属性->高级系统设置->环境变量->新建->classpath中的jar包(class文件)
-
java中为了保证类加载的安全,使用了双亲委派机制。
- 优先从“启动类加载器”中加载,这个称为“父”
- “父”无法加载到,再从“扩展类加载器”中加载,这个称为“母”双亲委派,
- 如果二者都加载不到,才会考虑从“应用类加载器”中加载,直到加载到为止。