[jboss-dev] Multiple classLoaders for a single WAR file on Tomcat

Clebert Suconic csuconic at redhat.com
Mon Aug 6 12:49:51 EDT 2007


I can't tell where this is being created.. but I can tell where is being 
referenced.


the URLClassLoader is being referenced at DeploymentInfo.annotationsCL:



java.net.URLClassLoader at 21471599
!--- FieldReference public transient java.net.URLClassLoader 
org.jboss.deployment.DeploymentInfo.annotationsCl=org.jboss.deployment.DeploymentInfo at 3720195 
  Detail
!--- FieldReference private java.lang.ClassLoader 
java.security.ProtectionDomain.classloader=java.security.ProtectionDomain at 28805459 
  Detail
!--- FieldReference private final transient java.lang.ClassLoader 
java.lang.Package.loader=java.lang.Package at 13417143


The other one (WebAppClassLoader) has a bunch of references on Tomcat 
and Jasper compiler...



Sometimes those deployments are dulicated for some reason... When I get 
the URLClassLoader duplicated, I have two distinct 
DeploymentInfo.annotationsCLs referencing it.  (ON jboss-4.0.5). on 
JBoss 4-2 I haven't seen the same behavior when I tried (tried only once).


Clebert

Scott M Stark wrote:
> That should only be true if the context is enabled for that, and I did
> not think that was the default. Can you show the creation point of each
> class loader involved here?
> 
> Adrian wrote:
>> I assume this is because Servlets can be individually reloaded?
>>
>> On Fri, 2007-08-03 at 17:11 -0500, Clebert Suconic wrote:
>>> This is probably a question for Remy:
>>>
>>> Why Tomcat creates multiple ClassLoaders for every deployment?
>>>
>>> Is this by design or this is a leak?
>>>
>>> For a single WAR, I'm seeing 4 classLoaders deployed just wasting 
>>> PermGeneration memory.
>>>
>>> For example, I deployed a single WAR, and I've got this Servlet loaded 
>>> by 4 distinct classLoaders. and this is a standard behavior I have seen 
>>> on Tomcat for a long time already.
>>>
>>> org.jboss.on.plugins.servlet.test.Counter:
>>>
>>> - java.net.URLClassLoader at 10891966
>>> - org.jboss.web.tomcat.tc5.WebAppClassLoader at 18775238
>>> - java.net.URLClassLoader at 22498184
>>> - org.jboss.web.tomcat.tc5.WebAppClassLoader at 8238932
>>>
>>>
>>> Also... if you use any other profiler (besides the ClassLoader analysis 
>>> I've written on JBossProfiler) you could be foolished by them as those 
>>> classes won't have any instances... Just the classDef loaded on the heap.
>>>
>>>
>>>
>>> Clebert
> 
> _______________________________________________
> jboss-development mailing list
> jboss-development at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-development




More information about the jboss-development mailing list