类加载器(双亲委派!!)
![](https://img2023.cnblogs.com/blog/2450982/202211/2450982-20221128210338334-677139829.png)
启动类加载器(c++写的,java代码无法直接访问)、扩展类加载器、应用程序类加载器、用户自定义类加载器(User ClassLoader)
注意:这里存在的加载器之间的层级关系并不是以继承的方式存在的,而是以组合的方式处理的。
打破双亲委派机制的例子:jdbc-driver类(不在JAVA_HOME/jre/lib目录下)加载过程,DriverManager.class.getClassLoader()的结果返回的是null,说明是启动类加载器负责加载DriverManager,但是其代码块中的loadInitialDrivers()方法调用了应用程序类加载器加载jdbc-driver驱动,打破了双亲委派机制。