You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Rob Davies (JIRA)" <ji...@apache.org> on 2008/06/11 12:40:00 UTC

[jira] Assigned: (AMQ-1790) Memory leak in broker - Temporary Queue related (fix proposal included)

     [ https://issues.apache.org/activemq/browse/AMQ-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rob Davies reassigned AMQ-1790:
-------------------------------

    Assignee: Rob Davies

> Memory leak in broker - Temporary Queue related (fix proposal included)
> -----------------------------------------------------------------------
>
>                 Key: AMQ-1790
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1790
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.1.0
>         Environment: ActiveMQ broker 5.1 
> Spring based application with synchronous messages (temp queue based)
>            Reporter: Gregory Mostizky
>            Assignee: Rob Davies
>            Priority: Critical
>
> ActiveMQ broker leaks memory when using temp queues.
> This is critical for projects that use spring based synchronous messaging because each message creates & destroys new temp queue,
> however because of the leak they are not completely cleaned up resulting in OutOfMemory exception.
> First these are the classes that are leaked:
> org.apache.activemq.usage.MemoryUsage
> org.apache.activemq.management.PollCountStatisticImpl
> org.apache.activemq.usage.DefaultUsageCapacity
> Cause:
> org.apache.activemq.broker.region.BaseDestination is a base class for queues and by extension TempQueues.
> When TempQueue is created it will call BaseDestination constructor which will allocate some memory usage and statistics objects.
> However, the cleanup operation is missing - when TempQueue is destroyed these resources are not removed, and because these objects form a tree with the root being the root SystemUsage object they are never deleted.
> Solution:
> BaseDestination should implement dispose() method - this method is already defined in Destination interface but not implemented in BaseDestination.
> This method should cleanup all the resources allocated during it's creation. For example, see Queue.dispose().

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.