[ https://issues.apache.org/jira/browse/FELIX-6529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17538081#comment-17538081 ]
Amit Mondal commented on FELIX-6529: ------------------------------------ String.intern() is not recommended for Java 6 for the fixed-size string pool. Since Felix FW uses Java 8 as its baseline, we can make use of StringTableSize which is by default set to ~60000 (I don't remember the exact number) and will allow String.intern() to run in constant time as it internally uses a map too and hence, String.intern() would surely be effective in contrast to custom maps to store the strings. > Improve memory usage ManifestParser using String deduplication > -------------------------------------------------------------- > > Key: FELIX-6529 > URL: https://issues.apache.org/jira/browse/FELIX-6529 > Project: Felix > Issue Type: Improvement > Reporter: Johannes Edmeier > Assignee: Karl Pauls > Priority: Major > Fix For: framework-7.0.4 > > Attachments: ManifestParser.patch, image-2022-05-13-14-16-39-509.png, > image-2022-05-13-14-17-55-965.png > > > In my heap dump I've seen a lot of duplicate Strings produced by the > ManifestParser. > It creates a lot of equal strings for the keys in the manifest but doesn't > deduplicate them and they're hold forever producing a lot on retained heap. > I've patched the ManifestParser to deduplicate just the keys and could save > ~8 Megs of heap. > Total usage before: 38MB after: 30MB > Duplicated Strings before: > !image-2022-05-13-14-16-39-509.png|width=658,height=203! > Duplicated Strings after: > !image-2022-05-13-14-17-55-965.png|width=793,height=200! > See patch attached. -- This message was sent by Atlassian Jira (v8.20.7#820007)