本文内容来自《深入理解JAVA虚拟机》
1. 虚拟机类加载机制
1.1 类加载器类
(1)启动类加载器Bootstrap ClassLoader
这个类加载器使用C++语言实现(只限于HotSpot),负责加载存放在<JAVA_HOME>\lib目录中的,或者被-Xbootstrapclasspath参数所指定的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载器无法被JAVA程序直接引用。
(2)扩展类加载器Extension ClassLoader
这个类加载器使用JAVA语言实现,负责加载存放在<JAVA_HOME>\lib\ext目录中的,或者被java.ext.dirs系统变量所指定的路径中的所有类库,开发者可以直接使用扩展类加载器。
(3)应用程序类加载器Application ClassLoader
这个类加载器使用JAVA语言实现,负责加载类路径(ClassPath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义自己的类加载器,一般情况下这个就是程序中默认 的类加载器。
1.2 双亲委派模型
类加载器之间的这种层次关系,称为类加载器的双亲委派模型
1.3 TOMCAT类加载机制
启动类加载器、扩展类加载器、应用程序类加载器所加载的内容请看上面的内容
common类加载器用来目录tomcat/lib下面的类库
WebApp类加载器用来加载各个系统下面的WebApp/WEB-INF/*中的类库
Jsp类加载器用来加载一个JSP文件,每一个JSP文件都对应一个JSP类加载器。