[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Issue Comment Edited: (AMQ-2716) ActiveMQConnection leaks
From:       "Gary Tully (JIRA)" <jira () apache ! org>
Date:       2010-04-29 16:31:36
Message-ID: 31187820.8091272558696372.JavaMail.jira () thor
[Download RAW message or body]


    [ https://issues.apache.org/activemq/browse/AMQ-2716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=59165#action_59165 \
] 

Gary Tully edited comment on AMQ-2716 at 4/29/10 12:30 PM:
-----------------------------------------------------------

it does, but the point of a connection pool is to override close and place the \
connection back in the pool so that it can be reused.  It would be a nice enhancement \
to have the PooledConnection.close() impl delete outstanding temp destinations before \
returning to the pool.

      was (Author: gtully):
    it does, but the point of a connection pool is to override close and place the \
connection back in the pool so that it can be reused.  It would be a nice enhancement \
to have the pool.close() impl delete outstanding temp destinations.  
> ActiveMQConnection leaks memory by caching ActiveMQTempQueue objects
> --------------------------------------------------------------------
> 
> Key: AMQ-2716
> URL: https://issues.apache.org/activemq/browse/AMQ-2716
> Project: ActiveMQ
> Issue Type: Improvement
> Components: Broker, Geronimo Integration, JMS client, Transport
> Affects Versions: 5.3.0
> Environment: 64bit, SuSE 11, Sun Java 1.6.0_17, Geronimo 2.2, embedded AMQ 5.3, TCP \
>                 Tranport
> Reporter: TH L.
> 
> After running messaging several hours with more than 2,000,000 asynchronous send \
> and more than1,000,000 synchronous send/reply (with temp Queue), I found about 1.5G \
> ActiveMQConnection objects in my whole 2G memory heap (inspected with jmap and \
> Eclipse Memory Analyzer). The 1.5G ActiveMQConnection objects and their referencing \
> objects stay in heap old generation and cannot be cleaned by GC. By looking into \
> those ActiveMQConnections, I found there are a huge amount of HashMaps holding temp \
> Queue information (e.g. ActiveMQTempQueue with different sequenceId, physicalName, \
> etc.) Since the ActiveMQConnections are pooled, however, why those \
> ActiveMQTempQueues are always kept in ActiveMQConnections? is that a bug? or did I \
> do something wrong (wrong setup, wrong client code)? My client code
> {{{
> QueueConnection connection = null;
> QueueSession session = null;
> Queue requestQueue = null;
> Queue replyQueue = null;
> QueueReceiver receiver = null;
> QueueSender sender = null;
> try {
> connection = aConnFactory.createQueueConnection();
> connection.start();
> session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
> requestQueue = getDestinationQueue();
> sender = session.createSender(requestQueue);
> replyQueue = session.createTemporaryQueue(); // using temp queue
> aRequestMessage.setJMSReplyTo(replyQueue);
> sender.send(aRequestMessage, DeliveryMode.NON_PERSISTENT, Message.DEFAULT_PRIORITY, \
> timeToLive); receiver = session.createReceiver(replyQueue);
> receiver.receive();
> } catch (Exception e) {
> ...
> } finally {
> try { receiver.close(); } catch (Exception ignored) {}
> try { sender.close(); } catch (Exception ignored) {}
> try { session.close(); } catch (Exception ignored) {}
> try { connection.close(); } catch (Exception ignored) {}            
> }
> }}}

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic