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.