In our webapps running on Tomcat 7 we have seen quite a number of
classloader memory leaks. The end result is that after a number of
application reloads and redeploys, we run out of permanent generation
memory and Tomcat stops responding. We can see the evidence of this sort
of issue thanks to the new memory leak reporting in TC6+

 

Generally we can trace this back to service semantics library code,
ActiveMQ, Quartz, etc. I spent a fair bit of time hunting out these sort
of issues, squashing some of them by explicitly calling specific
finalization routines in each library, on context closure.

 

My question is, why is it that we have to be bothered by this
show-stopper memory leak? When the application is unloaded by Tomcat, it
should go away completely, regardless of (for example) unstopped threads
in library foo.

 

My semi-rant is inspired by the following recent comment by Mladen Turk.

 

"Entire IIS worker process recycling is meant for handling crappy .NET
applications with memory and resource leaks."

 

So, why can't Tomcat completely clean up our crappy java apps ;-) when a
reload is requested? 

 

Thanks

 

Dale

 

Reply via email to