Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.3.0
    • Component/s: JMS client
    • Labels:
      None
    • Environment:

      Ran on ActiveMQ 4.1.1 but ActiveMQ 5.0's code is the same

      Description

      I think it is a memory leak that calling close() on a org.apache.activemq.ra.ManagedSessionProxy does not remove it from the session list of the org.apache.activemq.ra.ManagedConnectionProxy that created it. Some programs (like mine) run on a Jboss bean thats generating messages every few seconds and I like to keep a Connection open to ActiveMQ and create a new session for each new batch of messages. When I close these sessions (which are really ManagedSessionProxy's), the actual ActiveMQSession wrapped inside closes but a lot of its data remains referenced inside it. Also, the reference to the ManagedSessionProxy stays in the ManagedConnectionProxy's session list. So since the ManagedSessionProxy has to stay in the ManagedConnectionproxy's session list, it stays in memory and so does the ActiveMQSession, and so all these sessions (thousands of them) stay in memory until the ManagedConnectionProxy is closed which my program only calls when the server shuts down.

      To generate this, create a simple message producing program that uses the resource adaptor's ActiveMQConnectionFactory to generate one connection. Then run a loop that creates a session on that connection, sends a message or two, and closes the session. May need to run this loop at least 100 times appreciate what I'm saying and how quickly it affects things.

      I think this will be a simple fix and hopefully will be resolved soon.

        Issue Links

          Activity

          Hide
          Steven Buberl added a comment -

          In hopes of providing some evidence and encouragement, I'm posted a memory snapshot of the top 24 ActiveMQ classes by the amount of memory all its live objects take up. The server is a Jboss server that uses ActiveMQ for all its messaging, and the server has been runing for 6 days straight. Its sorted by total size of all reachable/live objects of the class to show you how much higher the count and total memory size of the top tier are from the rest.

          Count ... Total Size ... Class

          37189 ... 2360k ... org.apache.activemq.management.CountStatisticImpl

          18596 ... 1616k ... org.apache.activemq.management.TimeStatisticImpl

          9295 .... 1098k ... org.apache.activemq.management.JMSSessionStatsImpl

          9295 .... 1080k ... org.apache.activemq.ActiveMQSession

          27945 ... 436k .... org.apache.activemq.util.LongSequenceGenerator

          9307 .... 399k .... org.apache.activemq.command.SessionId

          9295 .... 335k .... org.apache.activemq.command.SessionInfo

          9295 .... 299k .... org.apache.activemq.ActiveMQSessionExecutor

          9295 .... 236k .... org.apache.activemq.MessageDispatchChannel

          3836 .... 194k .... org.apache.activemq.command.ProducerId

          9278 .... 154k .... org.apache.activemq.ra.ManagedSessionProxy

          24 ...... 96k ..... org.apache.activemq.command.DataStructure[]

          922 ..... 28k ..... org.apache.activemq.command.XATransactionId

          76 ...... 19k ..... org.apache.activemq.command.ActiveMQTextMessage

          76 ...... 6k ...... org.apache.activemq.command.MessageDispatch

          160 ..... 3k ...... org.apache.activemq.util.ByteSequence

          76 ...... 3k ...... org.apache.activemq.command.MessageId

          12 ...... 3k ...... org.apache.activemq.ActiveMQConnection

          12 ...... 1k ...... org.apache.activemq.transport.tcp.TcpTransport

          31 ...... 1k ...... org.apache.activemq.command.ActiveMQTopic

          28 ...... 1k ...... org.apache.activemq.command.ConsumerId

          14 ...... 1k ...... org.apache.activemq.command.ConsumerInfo

          21 ...... 1k ...... org.apache.activemq.TransactionContext

          And I'd like to note at any given time, on my server there are only about 15 ActiveMQSessions being used by the beans at a time but 9000 more along with all their stats and ids are stuck in memory too.

          Show
          Steven Buberl added a comment - In hopes of providing some evidence and encouragement, I'm posted a memory snapshot of the top 24 ActiveMQ classes by the amount of memory all its live objects take up. The server is a Jboss server that uses ActiveMQ for all its messaging, and the server has been runing for 6 days straight. Its sorted by total size of all reachable/live objects of the class to show you how much higher the count and total memory size of the top tier are from the rest. Count ... Total Size ... Class 37189 ... 2360k ... org.apache.activemq.management.CountStatisticImpl 18596 ... 1616k ... org.apache.activemq.management.TimeStatisticImpl 9295 .... 1098k ... org.apache.activemq.management.JMSSessionStatsImpl 9295 .... 1080k ... org.apache.activemq.ActiveMQSession 27945 ... 436k .... org.apache.activemq.util.LongSequenceGenerator 9307 .... 399k .... org.apache.activemq.command.SessionId 9295 .... 335k .... org.apache.activemq.command.SessionInfo 9295 .... 299k .... org.apache.activemq.ActiveMQSessionExecutor 9295 .... 236k .... org.apache.activemq.MessageDispatchChannel 3836 .... 194k .... org.apache.activemq.command.ProducerId 9278 .... 154k .... org.apache.activemq.ra.ManagedSessionProxy 24 ...... 96k ..... org.apache.activemq.command.DataStructure[] 922 ..... 28k ..... org.apache.activemq.command.XATransactionId 76 ...... 19k ..... org.apache.activemq.command.ActiveMQTextMessage 76 ...... 6k ...... org.apache.activemq.command.MessageDispatch 160 ..... 3k ...... org.apache.activemq.util.ByteSequence 76 ...... 3k ...... org.apache.activemq.command.MessageId 12 ...... 3k ...... org.apache.activemq.ActiveMQConnection 12 ...... 1k ...... org.apache.activemq.transport.tcp.TcpTransport 31 ...... 1k ...... org.apache.activemq.command.ActiveMQTopic 28 ...... 1k ...... org.apache.activemq.command.ConsumerId 14 ...... 1k ...... org.apache.activemq.command.ConsumerInfo 21 ...... 1k ...... org.apache.activemq.TransactionContext And I'd like to note at any given time, on my server there are only about 15 ActiveMQSessions being used by the beans at a time but 9000 more along with all their stats and ids are stuck in memory too.
          Hide
          Ivan Koblik added a comment - - edited

          We seem to have same problem. Complete memory histogram is attached to the issue.

          Show
          Ivan Koblik added a comment - - edited We seem to have same problem. Complete memory histogram is attached to the issue.
          Hide
          Ivan Koblik added a comment -

          It looks like we didn't use sessions right. We were opening them but not closing afterwards, it was OK when we had a new connection per message, but as soon as we moved to the single connection factory, memory leak became apparent.

          Show
          Ivan Koblik added a comment - It looks like we didn't use sessions right. We were opening them but not closing afterwards, it was OK when we had a new connection per message, but as soon as we moved to the single connection factory, memory leak became apparent.
          Hide
          Mario Siegenthaler added a comment -

          Duplicate of AMQ-2166 (contains a fix)

          Actually mine was the duplicate of this (didn't find it then, I appologize)

          Show
          Mario Siegenthaler added a comment - Duplicate of AMQ-2166 (contains a fix) Actually mine was the duplicate of this (didn't find it then, I appologize)
          Hide
          Bruce Snyder added a comment -

          Fixed by AMQ-2166

          Show
          Bruce Snyder added a comment - Fixed by AMQ-2166

            People

            • Assignee:
              Unassigned
              Reporter:
              Steven Buberl
            • Votes:
              13 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development