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

Hiram Chirino reassigned AMQ-1681:
----------------------------------

    Assignee: Hiram Chirino

> Memory leak when creating large numbers of TemporaryQueues (Log4J related)
> --------------------------------------------------------------------------
>
>                 Key: AMQ-1681
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1681
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.0.0
>         Environment: Embedded broker using Log4J
>            Reporter: Gregory Mostizky
>            Assignee: Hiram Chirino
>
> When using an embedded broker and using Log4J, there is a memory leak in the 
> broker for each new TemporaryQueue created.
> This seems to be the offending code (taken from 5.0.0-release source):
> org.apache.activemq.broker.region.Queue:
>     public Queue(Broker broker, ActiveMQDestination destination, final 
> SystemUsage systemUsage, MessageStore store, DestinationStatistics 
> parentStats,
>                  TaskRunnerFactory taskFactory, Store tmpStore) throws 
> Exception {
>         ... skipped....
>         // let's copy the enabled property from the parent 
> DestinationStatistics
>         this.destinationStatistics.setEnabled(parentStats.isEnabled());
>         destinationStatistics.setParent(parentStats);
>         this.log = LogFactory.getLog(getClass().getName() + "." + 
> destination.getPhysicalName());
>     }
> What happens here is that for each new TemporaryQueue created a new log 
> instance is created with rather large string as it's name.
> This instance is unique for each new TemoraryQueue and because of the way 
> Log4J handles those instances, it is never removed once initalized.
> We hit this bug when we were testing performance together with Spring-based 
> synchronous JMS API, which is implemented in such a way that 
> for each new message it creates a new TemporaryQueue. We got OutOfMemory 
> after about 40000 messages with 128M heap.
> I am not sure what this special log instance is used for, but assuming it's 
> not very important, it will be easy to fix this bug with just using some 
> predefined log name always.

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

Reply via email to