Memory leak when undeploying webapp with ActiveMQ client
--------------------------------------------------------
Key: AMQ-2852
URL: https://issues.apache.org/activemq/browse/AMQ-2852
Project: ActiveMQ
Issue Type: Bug
Components: Transport
Affects Versions: 5.3.2
Reporter: Daniel Spilker
I have a web app with an ActiveMQ client. When undeploying the app, Tomcat logs
the following messages.
{code}
28.07.2010 17:44:28 org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SCHWERWIEGEND: The web application [] appears to have started a thread named
[InactivityMonitor Async Task:
java.util.concurrent.threadpoolexecutor$wor...@c821ef] but has failed to stop
it. This is very likely to create a memory leak.
28.07.2010 17:44:28 org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SCHWERWIEGEND: The web application [] appears to have started a thread named
[TcpSocketClose: java.util.concurrent.threadpoolexecutor$wor...@19ac2e3] but
has failed to stop it. This is very likely to create a memory leak.
{code}
Searching for "InactivityMonitor Async Task" and "TcpSocketClose", I found
org.apache.activemq.transport.tcp.TcpTransport and
org.apache.activemq.transport.InactivityMonitor which both start a
ThreadPoolExecutor in their static intializers but never stop them. The
ThreadPoolExecutors hold references to ActiveMQ classes which hold a reference
to the webapp classloader. These references prevent the webapp classes from
being unloaded when the webapp is undeployed. Due to this the servlet container
runs out of memory after a few redeployments.
The ActiveMQ client should dispose all resources when being closed, including
the ThreadPoolExecutors. Or to provide some methods to explicitly stop these
Threads (like org.apache.activemq.thread.Scheduler.shutdown() does).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.