[ https://issues.apache.org/jira/browse/AMQ-3162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Tully resolved AMQ-3162. ----------------------------- Resolution: Fixed Fix Version/s: 5.5.0 variant of patch applied in r1063669, with thanks :-) URL: http://svn.apache.org/viewvc?rev=1063669&view=rev > ActiveMQ checkpoint worker makes unnecessary repeated calls to > Journal.getFileMap(), leading to excessive memory usage > ---------------------------------------------------------------------------------------------------------------------- > > Key: AMQ-3162 > URL: https://issues.apache.org/jira/browse/AMQ-3162 > Project: ActiveMQ > Issue Type: Bug > Affects Versions: 5.4.2 > Reporter: Craig Condit > Assignee: Gary Tully > Fix For: 5.5.0 > > Attachments: avoid-getfilemap.patch > > > During its cleanup run (default every 30 seconds), > MessageDatabase.checkpointUpdate() attempts to determine which data files are > safe to delete. It calls Journal.getFileMap() repeatedly within a loop to > determine if the file is referenced in memory. Journal.getFileMap() creates a > new TreeMap from the underlying map. Unfortunately, as the number of data > files grows on a busy broker, this can be called hundreds or even thousands > of times, leading to excessive run time, memory churn, and overall poor > performance (observed in our environment). > The attached patch simply moves the call to getFileMap() outside the loop so > that it runs in O(gcCandidates.size) vs. O(gcCandidates.size * fileMap.size). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.