[ 
https://issues.apache.org/jira/browse/AMQ-3451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13430390#comment-13430390
 ] 

Claudio Corsi commented on AMQ-3451:
------------------------------------

@Sergey

The issue is more fundamental than your patch.  Those threads are created by 
the default task runner factory and this factory is created once and then never 
shutdown throwout the life time of the process. 

Adding a shutdown of the default task runner will remove this issue but will 
raise another issue when using the shared classloader of the application server 
with multiple containers.

The default task runner should be associated with the broker server and not a 
self contained static class.  This should resolve the case of its use within 
the broker side code but will not resolve this issue within the client side 
issue.  That needs a little more work on getting this to work properly.

I have tried to shutdown the default task runner factory fix but when I hot 
deploy the container again.  It raises a rejected exception when trying to add 
a task to the runner since this executor has been shutdown already.

I tried a fix to associates a default task runner factory to the broker and 
that resolved the issue I was initially seeing.

I still have an issue with the client code that uses the default task runner 
factory.  This still needs work on my end and will probably require a different 
fix that would provide a similar solution.  I was thinking about using 
WeakReferences associated with a ReferenceQueue.  Whenever the remove method is 
called the task runner factory can be shutdown.  This might work.  I just need 
to implement this.

--Claudio

                
> Tomcat 6.0.32 complains that ActiveMQ 5.5 doesn't shutdown a thread
> -------------------------------------------------------------------
>
>                 Key: AMQ-3451
>                 URL: https://issues.apache.org/jira/browse/AMQ-3451
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.5.0
>         Environment: jdk 1.6.0_23 for Linux 64 bit, Ubuntu 11.04
> Tomcat 6.0.32
> Spring 3.0.5
>            Reporter: John Miller
>              Labels: leak, resource
>         Attachments: inherited_access_cotrol_context_leak.png, patch.txt, 
> transport_thread_leak.png
>
>
> Every time when restarting web application in Tomcat Manager I get messages:
> SEVERE: The web application [/sms] appears to have started a thread named 
> [ActiveMQ Task-3] but has failed to stop it. This is very likely to create a 
> memory leak.
> With every restart PermGen space is increased and finally i got OutOfMemory 
> error for PermGen space.
> I use Spring DefaultMessageListenerContainer, and it's shutdown method closes 
> properly receivers threads. What is "ActiveMQ Task-3" thread and how to close 
> it properly ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to