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

Pierre De Rop commented on FELIX-5619:
--------------------------------------

great patch ! I just committed it in revision 1792829.

I will investigate if we can manage to supply custom implementations for 
FilterIndex.

Thanks Jeroen.

> MultiProperyFilterIndex memory consumption
> ------------------------------------------
>
>                 Key: FELIX-5619
>                 URL: https://issues.apache.org/jira/browse/FELIX-5619
>             Project: Felix
>          Issue Type: Improvement
>          Components: Dependency Manager
>    Affects Versions: org.apache.felix.dependencymanager-r9
>            Reporter: Jeroen Daanen
>         Attachments: Filter.java, MultiPropertyFilterIndex.java, 
> MultiPropertyFilterIndexPerformanceTest.java, 
> MultiPropertyFilterIndexReferencedTest.java, MultiPropertyKey.java, 
> MultiPropertyKeyTest.java, TestReference.java
>
>
> In our product using the dependency manager and having configured several 
> filter index settings, the memory consumption of the MultiPropertyFilterIndex 
> is relatively high because it contains a map of string keys to service 
> reference, where the keys are concatenated strings based on the service 
> properties. These strings are all newly created objects resulting in 
> inefficient memory usage.
> In the attachment you find a version of the index which uses less memory 
> because it no longer stores appended strings in new string objects, but 
> stores the original strings in string arrays. This way it can benefit for 
> instance from the garbage collector deduplicating strings. 
> Also attached are some unit tests to ensure the behavior did not change (note 
> that we could not find any existing unit tests on the 
> MultiPropertyFilterIndex).
> If a large project is configured in our product we could have around 41500 
> services total. The configured MultiproperyFilterIndexes then contain more 
> then 500000 keys.
> When executing the attached unit test 
> 'MultiPropertyFilterIndexPerformanceTest' for 500000 service references we 
> found the memory consumption is reduced by 44%:
> Existing implemenation:
> fastest write time: 3.433 milliseconds
> fastest read time: 1.577 milliseconds  
> memory consumption: 1374 MB
> New implementation:
> fastest write time: 2.329 milliseconds
> fastest read time: 1.997 milliseconds  
> memory consumption: 771 MB
> Would it be either possible to replace the existing implementation or make it 
> possible to supply a custom implementation of a filter index to the 
> dependency manager?



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to