[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