考虑我有一个与此类似的类结构
class Outer extends Activity {
Map<String, String> outerMap;
public Map getSampleMap() {
return sampleMap;
}
static class Inner {
Map<String, String> innerMap;
Inner(Outer outer) {
/* Weak ref to outer class object */
WeakReference weakref = new WeakReference<Outer>(outer);
/* reference to the outer map using the weak ref */
innerMap = weakref.get().getSampleMap();
}
void doSomething() {
// Operations on the innerMap
}
}
}
现在在上面的代码结构中
有人能指出一个很好的参考资料来源。
答案 0 :(得分:0)
innerMap
是对outer.outerMap
引用的同一对象的强引用。通过对outer
的弱引用来初始化它不会改变它。innerMap
引用的对象在没有任何实时,强有力的引用时将有资格获得GC。它曾经被某个类的实例变量引用,后来一直是GC&#39; ed没有区别。outer
引用的同一对象的另一个引用outer.outerMap
之外的存在本身并不会阻止outer
引用的对象本身为GC 至于资源,你可以试试