1、什么是类加载器
专门负责加载类的命令/工具
ClassLoader
2、JDK中自带了3个类加载器
启动类加载器
扩展类加载器
应用类加载器
3、假设有这样一段代码:
String s = “abc”;
代码在开始执行之前,会将所需要的类都加载到JVM当中 通过类加载器加载,看到以上代码 类加载器会找到String.class文件,找到就加载,那么是怎么进行加载的呢? 首先通过“启动类加载器”加载 (注意:启动器类加载器专门加载jre\lib\rt.jar)(rt,jar中都是java的核心类库) 如果通过“启动器加载器”加载不到的时候,会通过“扩展类加载器”加载 (注意:扩展类加载器专门加载jre\lib\ext\*) 如果通过“扩展类器加载器”加载不到的时候,会通过“应用类加载器”加载 (注意:应用类加载器专门加载classPath中的jar包(class文件)*)
4、启动类加载器又称“父加载器”,拓展类加载器又称“母加载器”
两者合称“双亲委派机制”(保护机制)
比如你自己写了String(应该通过应用类加载器加载),但jdk只会通过启动类加载器加载lang包下的String,不会加载自己的String的class文件,这样就保证了安全性