Tomcat中,Web应用中对class和resource的加载

昨天在读一篇帮助:http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
是讲述Tomcat中,classLoader如何工作的。

其中一段是这样讲的:
引用

Therefore, from the perspective of a web application, class or resource loading looks in the following repositories, in this order:

Bootstrap classes of your JVM
System class loader classes (described above)
/WEB-INF/classes of your web application
/WEB-INF/lib/*.jar of your web application
$CATALINA_HOME/lib
$CATALINA_HOME/lib/*.jar


我的理解是,当Tomcat中的某个Web应用,需要请求某个class信息,或者是资源信息,将会按照以下的顺序进行查找。

JVM
Tomcat启动的关键类
应用中的classes目录下的class文件
应用中lib目录下的jar文件
Tomcat安装目录下的lib目录
Tomcat安装目录下的lib目录下的jar文件。

如果按照这样来看的话,应该会出现这样的情况,如果同一个Tomcat下有两个不同的web应用,这两个应用都在自己的lib目录下使用同样的第三方jar包。那么Tomcat会使用不同的Web应用级别的classLoader来加载这两个jar包。

这样就造成了Perm空间的浪费。

你可能感兴趣的:(apache,jvm,tomcat,windows,Web)