双亲委派模型
Java从1.2开始引入双亲委派模型。除了启动类装载器,每个类装载器都有一个双亲。当类装载器装载某个类的时候,首先会委派它的双亲去装载这个类,它的双再委派自己的双亲,直到启动类装载器。
Java类装载器的结构如下:
1、启动类装载器
主要负责装载jdk_home/lib目录下的核心api 或 -Xbootclasspath 选项指定的jar包。处于双亲委派的最顶层,该类其实是由C语言编写。
2、扩展类装载器
主要负责装载jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包
3、系统类装载器
主要负责装载ClassPath下的类。
4、自定义类装载器
自定义类继承ClassLoader或其子类。可以运行时动态装载某些类。