类加载器分为两类,一类是Java代码实现,一类是Java虚拟机底层源码实现的
底层源码实现:加载程序运行时的基础类
Java语言实现(JDK中提供或自定义):继承自抽象类ClassLoader
一、启动类加载器
C++编写,加载jre/lib下的类文件,jar包。
偏向底层的加载器,获取类后再getClassLoader后显示为空,原因为出于安全性考虑无法让程序员获取。
二、扩展类加载器、应用程序类加载器
都是JDK中提供的,使用Java编写的。
源码位于sun.misc.Launcher,是一个静态内部类,继承自URLClassloader,具备通过目录或指定jar包将字节码文件加载到内存中。
扩展类加载器默认加载jre/lib/ext下的类文件,通用但是不重要
应用程序类加载器:加载classpath下的类文件