activemq-dev mailing list archives

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


Martin Carpella updated AMQ-3316:

    Attachment:     (was: connectionstatetracker_fixed.patch)

> 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_fixed.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