activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Carpella (JIRA)" <j...@apache.org>
Subject [jira] [Created] (AMQ-3316) Memory leak in ConnectionStateTracker with MessagePull objects
Date Wed, 11 May 2011 18:15:47 GMT
Memory leak in ConnectionStateTracker with MessagePull objects
--------------------------------------------------------------

                 Key: AMQ-3316
                 URL: https://issues.apache.org/jira/browse/AMQ-3316
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: 5.5.0, 5.4.2
            Reporter: Martin Carpella
         Attachments: connectionstatetracker.patch

We discovered a memory leak in {{ConnectionStateTracker}} in case a long-lived connection
with prefetch=0 is used.

If prefetch=0 is used, {{MessagePull}} objects are enqueued in {{messageCache}} with an estimated
size of 400. But in the cache's {{removeEldestEntry()}} method no size is subtracted from
{{currentCacheSize}} for {{MessagePull}} instances. This messes with the cache as it will
continue to remove objects even if there is space in the cache. But after about 5,368,709
consumed messages this will cause the {{currentCacheSize}} to roll-over maximum integer and
become negative. As a consequence, for the next about 5,368,709 no messages will be removed
from the cache any longer.

This sooner or later will trigger out-of-memory conditions, depending on the size of the various
pools. In our case this caused out-of-memory in PermGen first, as message IDs seem to be internalized,
and PermGen is considerably smaller than the heap.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message