2013-03-26 5 views
0

Я использую RefQueue, чтобы отслеживать, какие WeakRef больше не указывают на объект. Но я понимаю, как это работает. Когда я говорю WeakReference зарегистрировать себя в определенной очереди, а затем через некоторое время я:WeakReference and ReferenceQueue performance matter

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

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

ли она проходит через все объявления ссылки (тестирование ли реф точки на нуле), или есть тоже очереди на самом деле один для зарегистрированных и второй для тех, которые GC считаются «не используются»? Или, может быть, это работает совсем по-другому?

ответ

0

Ссылки будут попадать в очередь только в ссылочной очереди после того, как объект ссылки получит GC'd.