>From what I have read, allowing the reference to be GC'd itself is
equivalent to calling clear.  Does adding clear() make an observable
difference?

On Sat, Jun 5, 2010 at 1:31 AM, Anty <anty....@gmail.com> wrote:
> ---------- Forwarded message ----------
> From: Anty <anty....@gmail.com>
> Date: Sat, Jun 5, 2010 at 4:30 PM
> Subject: PhantomReference in Cassandra
> To: u...@cassandra.apache.org, chukwa-dev <chukwa-...@hadoop.apache.org>
>
>
> Hi:All
> in the code of SSTableReader.java
>  private static final ReferenceQueue<SSTableReader> finalizerQueue = new
> ReferenceQueue<SSTableReader>()
>    {{
>        Runnable runnable = new Runnable()
>        {
>            public void run()
>            {
>                while (true)
>                {
>                    SSTableDeletingReference r = null;
>                    try
>                    {
>                        r = (SSTableDeletingReference)
> finalizerQueue.remove();
>                        finalizers.remove(r);
>                    }
>                    catch (InterruptedException e)
>                    {
>                        throw new RuntimeException(e);
>                    }
>                    try
>                    {
>                        r.cleanup();
>                    }
>                    catch (IOException e)
>                    {
>                        logger.error("Error deleting " + r.path, e);
>                    }
>                }
>            }
>        };
>        new Thread(runnable, "SSTABLE-DELETER").start();
>    }};
>
>
> the PhantomReference SSTableDeletingReference's cleanup() method doesn't
> invoked clear() method inherited from Reference, whichi clear the phantom
> reference to the referent.
> but,the GC enqueues the PhantomReference onto ReferenceQueue before the
> phantom reference clears. Is it necessary to invoke the clear() method after
> r.clearup() or add clear() method in cleanup() method to accelerate the GC
> process.
>    try
>                    {
>                        r.cleanup();
>                        r.clear();
>
>                    }
>                    catch (IOException e)
>                    {
>                        logger.error("Error deleting " + r.path, e);
>                    }
> --
> Best Regards
> Anty Rao
>
>
>
> --
> Best Regards
> Anty Rao
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

Reply via email to