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

Michael Dürig commented on OAK-2968:
------------------------------------

There shouldn't be an {{OOME}} because of too many {{ModifiedNodeState}} 
instances in the first place. Those instances are meant for holding a 
reasonable amount of transient changes in memory. At some point they should be 
written ahead to the persistence layer. 

Maybe we are seeing a regression of OAK-1056 here (as per private communication 
with [~marett] this happens on the document node store.) 

[~mreutegg] any idea?

> Reduce commits memory footprint of ModifiedNodeState
> ----------------------------------------------------
>
>                 Key: OAK-2968
>                 URL: https://issues.apache.org/jira/browse/OAK-2968
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.2.2
>            Reporter: Timothee Maret
>              Labels: perfomance
>
> As described in [0] large commits consume a fair amount of memory. With very 
> large commits, this become problematic as commits may eat up 100GB or more 
> and thus causing OOME and aborting the commit.
> The current representation of commits in memory uses a tree which each node 
> contains HashMaps for the changed properties as well as sub-nodes.
> In cases where the tree is deep but not sparse, most of the children HashMaps 
> will contain 1 element yet they are created with the default capacity (16) 
> thus wasting space.
> This issue covers a simple way to reduce the memory consumption in this case 
> by simply creating HashMaps of the required capacity (where applicable) or of 
> minimal capacity (1) where unknown.
> [0] http://permalink.gmane.org/gmane.comp.apache.jackrabbit.oak.devel/8196



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

Reply via email to