[ 
https://issues.apache.org/jira/browse/AMQ-6477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15602395#comment-15602395
 ] 

Christopher L. Shannon commented on AMQ-6477:
---------------------------------------------

May not need the sync after all since the dispatch happens in the same thread 
sequentially (the dispatch policy just iterates over each subscription 1 at a 
time)

> ReduceMemoryFootprint should apply to non-persistent messages and 
> subscriptions
> -------------------------------------------------------------------------------
>
>                 Key: AMQ-6477
>                 URL: https://issues.apache.org/jira/browse/AMQ-6477
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.14.1
>            Reporter: Christopher L. Shannon
>            Assignee: Christopher L. Shannon
>
> There is a flag called reduceMemoryFootprint which will clear out the 
> unmarshalled state of a message after it is added to a queue/topic because 
> that state isn't counted towards the size and can lead to OOM errors.
> However, even setting this flag, I am still seeing some brokers run out of 
> memory.  After analyzing the heap dumps I have found 2 reasons for this:
> 1) Non-persistent messages do not have their unmarshalled state cleared.  
> This was done because when a message is persisted it is guaranteed to have 
> the marshalled state.  However we can still clear the memory for 
> non-persistent messages as long as we check to make sure the marshalled state 
> exists first, which it will for transports like TCP but won't exist for the 
> VM transport.
> 2) When a message is added to a subscription the properties are needed to 
> check which subscription messages can be dispatched to.  This causes the 
> memory to be unmarshalled again.  
> In the topic case, we should probably defer the clearing of the state until 
> after the message is added to a subscription because messages are immediately 
> dispatched to topic subs so we don't unnecessarily have to convert the data 
> twice.  In the queue case it probably makes sense to clear memory on add to 
> the queue and on add to the subscription.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to