tomcat类加载机制
Posted exact
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat类加载机制相关的知识,希望对你有一定的参考价值。
1.1 tomcat类加载机制
1.1.1 概览
Bootstrap
|
System
|
Common
/
Webapp1 Webapp2 ...
备注:这里的加载模型和jvm的三层classloader有区别。总体思想类似。
1.1.2 各层加载器
1.1.2.1 Bootstrap
此类加载器包含Java虚拟机提供的基本运行时类。
加载java/jre/lib 和 java/jre/lib/ext. 相当于jvm的bootstrap和extensions class loader。
1.1.2.2 System
此类加载器通常从CLASSPATH
环境变量的内容初始化。Tomcat内部类和Web应用程序都可以看到所有这些类。
加载下面路径的jar包
- $CATALINA_BASE/bin
- $CATALINA_HOME/bin
1.1.2.3 Common
此类加载器包含对Tomcat内部类和所有Web应用程序都可见的其他类。
加载下面路径的jar包
- $CATALINA_BASE/lib
- $CATALINA_HOME/lib
1.1.2.4 WebAppX
为部署在单个Tomcat实例中的每个Web应用程序创建一个类加载器。/WEB-INF/classes
Web应用程序目录中的所有解压缩的类和资源,以及Web应用程序/WEB-INF/lib
目录下的JAR文件中的类和资源,都对此Web应用程序可见,但对其他应用程序不可见。
Web应用程序类加载器与默认Java委托模型不同。当从web应用的(webappX类加载器)加载class的请求被处理时,这个类加载器会首先尝试从本地资源自己加载这个类,而不是先委托给父类加载器。
因此,从Web应用程序的角度来看,类或资源加载按以下顺序查找以下存储库:
- JVM的Bootstrap类
- 您的Web应用程序的 / WEB-INF /classes
- 您的Web应用程序的 /WEB-INF/lib/*.jar
- 系统类加载器类(如上所述 System)
- 常见的类加载器类(如上所述,Common)
以上是关于tomcat类加载机制的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段