假设我有2个Java类,A和B看起来像这样:
public static class A {
}
public static class B {
private A parent;
public B(A parent) {
this.parent = parent;
}
}
现在,我有一个A类实例(称之为' xa')和B类实例(' yb')。我想要一个通用的方法来防止' yb'从垃圾收集到' xa'有资格获得GC。假设我无法修改任何一个类的代码。基本上,我希望实现完全相同的行为,如果' xa'直接参考了' yb' (通过一个领域)。
我已经探索过尝试使用PhantomReferences + ReferenceQueues,但我似乎总是遇到一个死胡同,直接引用了' xa'最终阻止两个对象成为GC' d ...
仅供参考,我的实际用例是一个弱侦听器,只需要与另一个对象一起存在。