Usando ReferenceQueue e WeakReference

Eu quero fechar corretamente o objeto Closeable quando não é mais referenciado por outros segmentos.

Eu escrevi um pequeno teste, mas depois que o objeto é enfileirado, o método get retorna null, ou seja, o método poll retorna o próprio Object que não tem referente.

  public static void main(String[] args)
  {
   ReferenceQueue<Closeable> reaped = new ReferenceQueue<Closeable>();
   Closeable s = <SOME CLOSEABLE IMPL>;
   WeakReference<Closeable> ws = new WeakReference<Closeable>(s, reaped);
   s = null;

   System.gc();
   Closeable ro = (Closeable)reaped.poll().get();
   ro.close();
  }

Desde já, obrigado. Qualquer ajuda será apreciada.

questionAnswers(1)

yourAnswerToTheQuestion