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
> 

Reply via email to