JDK默认提供了如下几种ClassLoader:
1,Bootstrap loader
Bootstrap 加载器是用c++语言写的,它是在java虚拟机启动后初始的,它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME/jre/classes中的类
1,ExtClassLoader
Bootstrap loader加载ExtClassLoader,并且将ExtClassLoader的父加载器设置为Bootstrap loader,ExtClassLoader是用java写的,具体来说就是sun.misc.Launcher$ExtClassLoader,ExtClassLoader主要加载%JAVA_HOME%/jre/lib/ext,此路径下所有classes目录以及java.ext.dirs系统变量指定的路径中的类库。
2,AppClassLoader
Bootstrap loader加载完ExtClassLoader后,就会加载AppClassLoader,并且将AppClassLoader的父加载器指定为ExtClassLoader,AppClassLoader也是用java写的,它的实现类是sun.misc.Launche$AppClassLoader,另外我们知道ClasssLoader中有个getSystemClassLoader方法,此方法返回的正是AppclassLoader.AppClassLoader主要负责加载classpath所指定的位置的类或者是jar文档,它也是java程序默认的类加载器。