Java类加载器 Java类加载器英語Java Classloader是Java运行时环境Java Runtime Environment的一个部件负责动态加载Java类到Java虚拟机的内存空间中类通常是按需加载即第一次使用该类时才加载由于有了类加载器Java运行时系统不需要知道文件与文件系统对学习类加载器而言掌握Java的委派概念是很重要的 每个Java类必须由某个类加载器装入到内存Java程序可以通过类加载器来利用外部库即由其他作者编写的软件库 JVM中有个默认的类加载器 引导Bootstrap类加载器由原生代码如C语言编写不继承自javalangClassLoader负责加载核心Java库存储在JAVAHOMEjrelib目录中 扩展Extensions类加载器用来在JAVAHOMEjrelibext或javaextdirs中指明的目录中加载 Java的扩展库Java 虚拟机的实现会提供一个扩展库目录该类加载器在此目录里面查找并加载 Java 类该类由sunmiscLauncherExtClassLoader实现 Apps类加载器也称系统类加载器根据 Java应用程序的类路径javaclasspath或CLASSPATH环境变量来加载 Java 类一般来说Java 应用的类都是由它来完成加载的可以通过 ClassLoadergetSystemClassLoader来获取它该类由sunmiscLauncherAppClassLoader实现 每个类装载器通过组合的方式包含一个父装载器parent class loader JDK 之后引入双亲委派方式来实现类加载器的层次调用以尽可能保证JDK的系统API不会被用户定义的类加载器所破坏但一些使用场景会打破这个惯例来实现必要的功能