2013-03-26 36 views
0

我使用RefQueue来跟踪哪些WeakRef不再指向对象。但我很怀疑它是如何工作的。当我告诉WeakReference的注册它在特定的队列自我,再经过一段时间后我做的:WeakReference和ReferenceQueue性能问题

private void removeDumpReferences() { 
    Reference<? extends E> ref = null; 

    while ((ref = garbageQueue.poll()) != null) { 
     list.remove(ref); 
    } 
} 

它通过所有已注册的引用运行(测试是否对空参考点),或有太多也太队列一个用于已注册的用户,另一个用于GC认为“不再使用”的用户?或者,也许它运作方式非常不同?

回答

0

引用对象获取GC'd后,引用将仅在引用队列中排入队列。