0

RefQueueを使用して、どのWeakRefがオブジェクトをポイントしていないかを追跡します。しかし、私はそれがどのように機能するのか疑問に思っています。WeakReferenceに自分自身を特定のキューに登録するように指示すると、しばらくすると次のようになります。

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

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

登録されているすべての参照を実行しますか(refがnullを指しているかどうかをテストします)、または実際には登録済みのキュー用に1つ、GCが「使用されていない」と見なしたもの用に2番目のキューがありますか?それとも、それは非常に異なる方法で機能しますか?

4

1 に答える 1

0

参照は、参照されたオブジェクトがGCされた後にのみ、参照キューにエンキューされます。

于 2013-03-26T16:31:49.500 に答える