John, I think you can remove all public methods of class WeakInternSet but ,add() i.e. tailor the implementation only for the need, at least until Doug Lea provides a weak/concurent/hashmap in java.util.concurent.
Rémi On 03/29/2012 11:45 AM, Jim Laskey wrote: > What we are trying to do is intern the MethodType. Maps are designed > to provide the key -> value relationship (one way.) If we only used > the key and a dummy value in the Map, it would be equivalent to a > write only collection, since there is no method to return a found key. > We would have to set the value to sometime meaningful like the > existing MethodType. Doing so creates the hard reference to the > MethodType and transitively to the unloadable Classes. > > We encountered this problem in Nashorn where we generate object > classes at runtime. MethodTypes that referred to these classes "hung > on" to them indefinitely. When running JavaScript test suites, we soon > exhausted the perm gen. > > I tried using WeakHashMap initially but then realized the > implications. WeakHashSet is useless, since it uses WeakHashMap, > making it not weak at all. > > This fix has been well tested, as it is integrated in our test system > (4 times a day on several different platforms.) > > > Sent from my iPhone > > On 2012-03-28, at 11:51 PM, Vitaly Davidovich <vita...@gmail.com > <mailto:vita...@gmail.com>> wrote: > >> We only care about keys here anyway, right? WeakHashMap with a dummy >> value object (some static reference) should achieve the same thing >> since its Entry will have the key referenced weakly and the value >> strongly (but we don't care since the value is a dummy static ref). >> Maybe I misunderstood the intent though ... >> >> Sent from my phone >> >> On Mar 28, 2012 9:02 PM, "Jim Laskey" <jlas...@me.com >> <mailto:jlas...@me.com>> wrote: >> >> The WeakHashMap leads to a non-weak reference to the class, since >> only the key is weak. Same is true for public versions of >> WeakHashSet. The collection used here is truly weak. >> >> Sent from my iPhone 4 >> >> On 2012-03-28, at 9:42 PM, Vitaly Davidovich <vita...@gmail.com >> <mailto:vita...@gmail.com>> wrote: >> >>> Hi John, >>> >>> I think you can use diamond generic inference when declaring the >>> weak intern set. >>> >>> Also any reason you didn't use WeakHashMap directly with dummy >>> value to simulate the set? Or wrap the WeakHashMap and >>> synchronize the accessors to it? >>> >>> Sent from my phone >>> >>> On Mar 28, 2012 7:52 PM, "John Rose" <john.r.r...@oracle.com >>> <mailto:john.r.r...@oracle.com>> wrote: >>> >>> http://cr.openjdk.java.net/~jrose/7127687/webrev.00/ >>> <http://cr.openjdk.java.net/%7Ejrose/7127687/webrev.00/> >>> >>> 7127687: MethodType leaks memory due to interning >>> Summary: Replace internTable with a weak-reference version. >>> >>> This is a point fix for JDK 8, and will (pending approval) >>> also be back-ported to JDK 7u. >>> >>> — John >>> >>> Notes on process: This code is part of JSR 292. Therefore >>> the review comments will be collected in mlvm-dev, and >>> changes will be integrated via hsx/hotspot-comp. >>> >>> At least one reviewer must be an official Reviewer the JDK 8 >>> Project [1], but other reviewers are most welcome. >>> >>> [1] http://openjdk.java.net/census#jdk8 >>> >>> _______________________________________________ >>> mlvm-dev mailing list >>> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >>> >>> _______________________________________________ >>> mlvm-dev mailing list >>> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >> >> _______________________________________________ >> mlvm-dev mailing list >> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >> >> _______________________________________________ >> mlvm-dev mailing list >> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > > > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev