【发布时间】:2014-10-08 15:37:43
【问题描述】:
我对 java 中的 PhantomReference 有点困惑。当我查看在线文章时,他们中的大多数都提到 PhantomReference 对象在创建后将返回 null 即使我们在引用上调用 get() 并且它还提到当 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());
以上两个语句打印 null。如果 pr.get() 返回 null 是否意味着 pr 引用的对象被垃圾收集? 如果是,为什么对象还没有加入优先队列?
谁能帮我澄清一下。如果我对 PhantomReference 和 ReferenceQueue 的理解有误,我向您道歉。
请简单描述这两个术语
非常感谢
【问题讨论】: