[
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)