当前位置: 代码迷 >> Web前端 >> Tomcat中,Web使用中对class和resource的加载
  详细解决方案

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

热度:97   发布时间:2012-10-15 09:45:25.0
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空间的浪费。
1 楼 maliang.scut 2010-03-15  
这里看到另外一位同学的讲述,更好:
http://gotothework.iteye.com/blog/219299
2 楼 maliang.scut 2010-03-15  
一个新的疑问,我在Windows下查看某个web应用的lib目录,大小为12M,那么当这些jar文件都被完全加载后,他们在Perm中会占用多大的空间呢?
  相关解决方案