说明:双亲委派
- 引导类加载器(bootstrap class loader)
用来加载java的核心库(JAVA_HOME/jre/lib/rt.jar或sun.boot.class.path路径下的内容),使用原生代码来实现的,并不继承java.lang.ClassLoader;
加载扩展类和应用程序类加载器,并指定它们的父类加载器。 - 扩展类加载器(extensions class loader)
用来加载java的扩展库(JAVA_HOME/jre/ext/*.jar或java.ext.dirs路径下的内容)。java虚拟机的实现会提供一个扩展库目录,该类加载器在此目录下查找并加载java类;
由sun.misc.Launcher$ExtClassLoader实现。 - 应用程序类加载器(application class loader)
根据java应用的类路径(classpath)加载,一般java应用的类都是由其加载;
由sun.misc.Launcher$AppClassLoader实现。 - 自定义类加载器
继承java.lang.ClassLoader实现。