activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <>
Subject [jira] [Resolved] (AMQ-3316) Memory leak in ConnectionStateTracker with MessagePull objects
Date Wed, 11 May 2011 18:53:47 GMT


Gary Tully resolved AMQ-3316.

       Resolution: Fixed
    Fix Version/s: 5.6.0

patch applied with thanks in

great catch :-)

> Memory leak in ConnectionStateTracker with MessagePull objects
> --------------------------------------------------------------
>                 Key: AMQ-3316
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.4.2, 5.5.0
>            Reporter: Martin Carpella
>            Assignee: Gary Tully
>             Fix For: 5.6.0
>         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:

View raw message