双亲委派模型有哪些加载器层次

49 阅读1分钟

1、启动类加载器(Bootstrap Class Loader):

这是Java虚拟机(JVM)自身的类加载器,负责加载Java的核心类库,如java.lang、java.util等。这个加载器通常使用C++编写,不属于Java类库的一部分。

2、扩展类加载器(Extension Class Loader):

这是Java的扩展类加载器,它的父类加载器是启动类加载器。扩展类加载器从Java的扩展目录(如jre/lib/ext)或者Java的扩展类库路径(通过java.ext.dirs系统属性或者-Djava.ext.dirs参数指定)中加载Java类库。

3、应用程序类加载器(Application Class Loader):

也称为系统类加载器(System Class Loader),是Java应用程序默认的类加载器。一般来说,Java应用的类都是由它来完成加载的。通过ClassLoader.getSystemClassLoader()方法可以获取到它。它的父类加载器是扩展类加载器。

4、自定义类加载器:

用户可以通过继承java.lang.ClassLoader类来实现自定义的类加载器,以满足特殊的需求。

在双亲委派模型中,当一个类加载器需要加载一个类时,它首先会把这个请求委派给父类加载器去完成,如果父类加载器无法完成这个请求(即找不到指定的类),那么子类加载器才会尝试自己去加载这个类。这种层次结构保证了Java的类库在加载时的安全性和一致性。