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.