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.

Reply via email to