[ 
https://issues.apache.org/jira/browse/JCR-1663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jukka Zitting updated JCR-1663:
-------------------------------

    Attachment: JCR-1663.patch

Do you have a chance of trying out the attached patch (JCR-1663.patch)? It's a 
rather simple implementation of the flyweight pattern with the added twist that 
it uses a fixed-size hash table to avoid blowing up too much memory in the 
worst case.

The change seems to work fine (i.e. no regressions), but I don't have a good 
performance/memory test suite at hand to verify whether this is worth the added 
complexity.

> REFERENCE properties produce duplicate strings in memory
> --------------------------------------------------------
>
>                 Key: JCR-1663
>                 URL: https://issues.apache.org/jira/browse/JCR-1663
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: jackrabbit-core, jackrabbit-spi-commons
>    Affects Versions: 1.4, core 1.4.5
>            Reporter: Roman Puchkovskiy
>         Attachments: JCR-1663.patch
>
>
> When reference property is loaded from PM, 
> Serializer.deserialize(NodeReferences, InputStream) is called, which calls 
> PropertyId.valueOf(String), which in turn calls 
> NameFactoryImpl.create(String) which finally splits a full property name to 
> namespace and local name. Namespace is internalized, but local name is not 
> (comments say that this is done to avoid perm space overfilling).
> So, in the end, a new String instance is created for local name. This leads 
> to considerable memory waste when repository has a lot of nodes with 
> REFERENCE properties.
> It seems that local name part could be internalized here too because in the 
> most repositories it's not allowed to create properties with arbitrary names, 
> so the danger of perm space exhaust does not seem to be an argument.
> As for ways to resolve this, maybe a new NameFactory implementation could be 
> created which would be used for properties only (and, possibly, mainly in the 
> PropertyId.valueOf(String)) which would extend an existing NameFactoryImpl 
> overriding its create(String) method.
> What do you think about all this?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to