Chuck, Mark,

Many thanks to both.
I'll give it a try.

Btw, I'm quite sure the problem is located in the weblogic.jar library,
as 2 other developers (working on different projects) already told me
some similar problems with their app being reloaded.

Anyway, time will tell.

Cheers,

Pieter

On Wed, 2009-02-11 at 16:15 +0000, Mark Thomas wrote:
> Pieter Temmerman wrote:
> > Is there any documentation I can read to understand this process better,
> > or do I rather have to digg into the source code to get a better picture
> > of all these Tomcat internals?
> > I'm very interested in understanding how all this works, because at the
> > end of the day, many problems can be reduced to something easy if you
> > understand the internals. I'd be glad if you could point me to some good
> > docs.
> 
> The YourKit help is quite good as I recall.
> 
> >> Hence none of your classes are unloaded and Tomcat has an instance of your 
> >> web
> >> application it can't garbage collect -> memory leak.
> > Ok. Sounds reasonable. But why aren't my classes unloaded when I
> > undeploy a webapp? Isn't Tomcat responsible for unloading my classes
> > when I order it to undeploy my webapp?.
> 
> Tomcat will clear the references it has created but you are responsible for
> clearing the references you create. Once all the references are cleared gc 
> will
> remove it.
> 
> In this case your classes are pinned into memory by the following reference 
> chain:
> 
> DriverManager > JDBC driver > webapp classloader > webapp classes
> 
> Since you created this by calling DriverManager.registerDriver() you have to
> clear it.
> 
> >> You need to find which objects are holding on to a reference to the the 
> >> weblogic
> >> class and make sure it gets cleared when the app restarts. A context 
> >> listener
> >> might be useful here.
> > I never heard about context listeners, but according to the explanation
> > at below link, I think I know what you mean. Sounds good!
> > Just one question. How do you clear an object? Sorry, I'm not a Java
> > programmer (Actually, I'm not a programmer at all). Would it be
> > something like object.finalize or object.destroy?
> 
> It depends on how the reference is maintained. In the DriverManager example 
> you
> would use DriverManager.deregisterDriver() to break the reference chain.
> 
> What you need to use in your case will depend on exactly what is in the
> reference chain and where it needs to be broken.
> 
> Mark
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 
-- 
Pieter Temmerman
email: ptemmerman....@sadiel.es
skype: ptemmerman.sadiel

SADIEL TECNOLOGÍAS DE LA INFORMACIÓN, S.A. http://www.sadiel.es.




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to