The only useful use case that I've come up with for PhantomReference is to subclass it. In one case it was used as a wrapper so that we'd know when an object was being collected so that we could reap life-cycle information from it. The behaviour was triggered by an JMX control. I suppose there were other ways to do this but given I only wanted to collect when the object was about to be GC'ed.....
Regards, Kirk On 2013-05-30, at 1:32 PM, Dmytro Sheyko <dmytro_she...@hotmail.com> wrote: > Mark, > > You are listed as an author of java.lang.ref classes. So you must know more > than others. Could you shed light on this? > > Thank you, > Dmytro > > From: dmytro_she...@hotmail.com > To: hotspot-gc-...@openjdk.java.net; core-libs-dev@openjdk.java.net > Subject: PhantomReference: why not cleared by GC when enqueued? > Date: Wed, 29 May 2013 14:45:54 +0300 > > Hello, > > Why phantom references are not automatically cleared by the garbage collector > as they are enqueued? > > Keeping phantom reachable objects in heap has some drawbacks: > 1. At least 2 GC are required in order to reclaim them, even in case when > application code pulls references from reference queue and clears them > promptly. > 2. GC pauses are increased since phantom reachable objects are still to be > marked. > > On the other hand, benefits are not obvious. How we can use referent if it's > not accessible? > > Regards, > Dmytro >