面试知识点2:Tomcat中的类加载机制
2014-07-11 00:51
411 查看
JVM类加载机制
SUN JVM中的ClassLoader采用的是双亲委派加载模式,类加载器之间是树状父子关系。加载类时首先检查父加载器能否加载,只有父加载器不能加载的情况下,才会自己加载。这样的好处是可以防止Java的核心类被恶意程序覆盖。JVM内置的类加载器有3个:
1. Bootstrap ClassLoader:
这个加载器是native代码实现的,主要负责加载核心的Java库rt.jar中的类。
2. Extensions ClassLoader:
负责载入标准扩展目录中的类,例如JVM的扩展目录是/jdk/jre/lib/ext。
3. Application ClassLoader:
默认的类加载器,加载CLASSPATH路径中的类。
Tomcat类加载机制
Tomcat中除了使用JVM的委派加载模型,还使用了自己的加载方式,称之为servlet加载模型。Tomcat8.0中WebappClassLoader的核心方法loadClass:1. 首先检查本地缓存是否存在(findLoadedClass0/ findLoadedClass)。
2. 委托系统加载器进行加载。
3. 如果设置delegate,委托给delegate父加载器加载,不成功再从本地加载。
4. 如果没有设置delegate,先从本地进行加载,不成功委托父加载器加载。
Tomcat中默认使用的是servlet加载方式,即先检查本地是否能够加载,如果不能再委托给父加载器。
jar包的加载顺序:
1. Java基础包
2. Web应用:WEB-INF\classes, WEB-INF\lib下的包。
3. Tomcat\lib下的包。
因此,如果在Web中共享jar包的话,除了将jar文件放在Tomcat\lib,还要从Web应用中删除该jar包,否则,不同应用使用不同加载器进行加载,会造成ClassCastException。
相关文章推荐
- Tomcat、Websphere和Jboss类加载机制
- Tomcat、Websphere和Jboss类加载机制
- tomcat 类加载机制 —— ClassLoader
- Tomcat、Websphere和Jboss类加载机制
- Java和Tomcat类加载机制
- Tomcat类加载机制
- Tomcat类加载器机制(Tomcat源码解析六)
- 面试知识点1:Tomcat+Spring中有几个ApplicationContext?它们的关系是什么样的?
- tomcat6源码研究:tomcat类加载机制
- Tomcat、Websphere和Jboss类加载机制
- tomcat的类加载机制
- tomcat加载jsp的处理机制问题
- Tomcat ClassLoad加载机制
- tomcat的类加载机制
- 面试常备题---JVM加载class文件的原理机制
- Tomcat、Websphere和Jboss类加载机制
- Tomcat、Websphere和Jboss类加载机制
- Tomcat源码解读系列(四)——Tomcat类加载机制概述
- Tomcat类加载机制
- Java中的类加载器以及Tomcat的类加载机制