[
https://issues.apache.org/jira/browse/JCR-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcel Reutegger updated JCR-1705:
----------------------------------
Attachment: JCR-1705-refactored.patch
Based on Jukkas' comment I've refactored the NodeState class and pulled out the
ChildNodeEntries and ChildNodeEntry classes. Instead of handling the shared
child node entries in NodeState the ChildNodeEntries itself now know about when
the internal maps are shared.
Most of the patch is simply renaming NodeState.ChildNodeEntry to
ChildNodeEntry, so don't be shocked about the size of the patch ;)
The memory saving is now a bit lower but still significant. With this patch the
ChildNodeEntries consume 14MB.
I think a similar approach is possible with the property names map.
> Reduce memory usage of transient nodes
> --------------------------------------
>
> Key: JCR-1705
> URL: https://issues.apache.org/jira/browse/JCR-1705
> Project: Jackrabbit
> Issue Type: Improvement
> Components: jackrabbit-core
> Reporter: Marcel Reutegger
> Priority: Minor
> Attachments: JCR-1705-refactored.patch, JCR-1705.patch
>
>
> When adding lots of transient nodes, most of them don't have child nodes
> because they are leafs. The attached patch initializes
> NodeState.childNodeEntries with an unmodifiable empty ChildNodeEntries
> instance and turns it into a modifiable one only when needed.
> Running a test with 100k nodes (10 children per node) the memory consumption
> for child node entries drops from 42MB to 12MB with this patch.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.