Memory leak in ModuleRevisionId.java ------------------------------------ Key: IVY-791 URL: https://issues.apache.org/jira/browse/IVY-791 Project: Ivy Issue Type: Bug Components: Core Affects Versions: 2.0.0-beta-2 Reporter: Archie Cobbs
In ModuleRevisionId.java an attempt is made to create a "canconical instance" cache like {{String.intern()}} using this static field: {noformat} private static final Map/*<ModuleRevisionId, ModuleRevisionId>*/ CACHE = new WeakHashMap(); {noformat} This doesn't work: each entry is both a key and a value, so the strong reference to the key will never allow the weak reference to the value to be the only remaining reference, and so entries will never be dropped. You have to wrap the keys in a WeakReference. See [Classpath's implementation of String.intern()|http://cvs.savannah.gnu.org/viewvc/classpath/vm/reference/java/lang/VMString.java?root=classpath&view=markup] for an example. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.