介绍
类加载器是用来将类的Class加载到方法区的对象,具有三种默认实现的类加载器,也可以自定义类加载器。
默认实现类加载器
启动类加载器
BootstrapClassLoader使用c/c++语言实现,集成在JVM中,在Java中获取为null。用于加载JDK中的核心库(rt.jar resources.jar charsets.jar)以及 -Xbootclasspath参数指定路径下的所有类
拓展类加载器
ExtClassLoader使用Java语言实现,位于sum.misc.Launcher中,又称为平台类加载器。用于加载%JRE_HOME/lib/ext目录下的jar包和类以及java.ext.dirs系统变量所指定的路径下的所有类。
应用程序类加载器
AppClassLoader使用Java语言实现,位于sum.misc.Launcher中,又称为系统类加载器。用于加载classpath类路径下的所有jar包和类。
实践
//获取应用类加载器
System.out.println(ClassLoader.getSystemClassLoader());
//获取扩展类加载器
System.out.println(ClassLoader.getSystemClassLoader().getParent());
//获取启动类加载器
System.out.println(ClassLoader.getSystemClassLoader().getParent().getParent());
其他
若要自定义类加载器则继承ClassLoader即可。
总结
今天主要介绍了三种类加载器的实现以及作用。