什么是类加载器?
类加载器是专门负责加载类的命令或者说工具
ClassLoader
java中的3个类加载器
JDK中自带了3个类加载器
- 启动类加载器
- 扩展类加载器
- 应用类加载器
假设有这样一段代码
String s = "abc";
代码在开始执行之前,会将所需要的类全部加载到JVM当中。通过类加载器加载。
看到以上代码类加载器会去找String.class文件,找到就加载,那么是怎么进行加载的呢?
-
首先通过“启动类加载器”加载。
“启动类加载器”专门加载jre/lib/rt.jar包下的类,rt.jar都是JDK中最核心的类库。
-
如果通过“启动类加载器”加载不到的时候,会通过“扩展类加载器”加载。
“扩展类加载器”专门加载jre/lib/ext目录下的class文件
-
如果“扩展类加载器”没有加载到时,那么会通过“应用类加载器”加载。
“应用类加载器”专门加载:classpath中的jar包(class)
java中为了保证类加载的安全,使用了双亲委派机制。优先从“启动类加载器”中加载,这个称为“父”,“父”无法加载到,再从“扩展类加载器”中加载,这个称为“母”。双亲委派。如果都加载不到,才会考虑从“应用类加载器”中加载,直到加载到为止。