RefQueueを使用して、どのWeakRefがオブジェクトをポイントしていないかを追跡します。しかし、私はそれがどのように機能するのか疑問に思っています。WeakReferenceに自分自身を特定のキューに登録するように指示すると、しばらくすると次のようになります。
private void removeDumpReferences() {
Reference<? extends E> ref = null;
while ((ref = garbageQueue.poll()) != null) {
list.remove(ref);
}
}
登録されているすべての参照を実行しますか(refがnullを指しているかどうかをテストします)、または実際には登録済みのキュー用に1つ、GCが「使用されていない」と見なしたもの用に2番目のキューがありますか?それとも、それは非常に異なる方法で機能しますか?