Java の PhantomReference について少し混乱しています。私がオンラインの記事を見たとき、それらのほとんどは、参照で get() を呼び出しても、PhantomReference オブジェクトは作成後に null を返すと述べており、また、PhantomReference が削除されると、オブジェクトがファントム的に到達可能であり、ReferenceQueue に挿入されると述べています。想い出。
次のコード例を試しましたが、結果に混乱があります。
Equipment equipment = new Equipment();
ReferenceQueue queue = new ReferenceQueue();
PhantomReference pr = new PhantomReference(equipment, queue);
System.out.println(pr.get());
System.out.println(queue.poll());
上記の 2 つのステートメントは null を出力します。pr.get() が null を返す場合、pr によって参照されるオブジェクトがガベージ コレクションされることを意味しますか? そうである場合、オブジェクトがまだ優先キューに追加されていないのはなぜですか?
誰でもこれを明確にするために私を助けてくれますか。PhantomReference と ReferenceQueue に関する私の理解が間違っていたら、お詫び申し上げます。
この 2 つの用語についても簡単に説明してください
どうもありがとう