1.今天看了一个博客来讲ThreadLocal用到了弱引用,发现自己没有真正体会到弱引用和强引用之间的区别,因此自己基于目前对强引用和弱引用的理解,写了如下代码,希望社区的朋友能帮我解答一下
2.代码如下:
类A:
import java.lang.ref.WeakReference;
public class A<T> extends WeakReference<T> {
public A(T referent) {
super(referent);
}
}
类B:
public class B {
}
类C:
import java.lang.ref.WeakReference;
public class C {
private B b = new B();
private WeakReference<B> a = new A<B>(b);
public WeakReference<B> getA() {
return a;
}
}
3.请问在上述代码中,类A与类B,类A与类C,类B与类C之间的引用关系分别是什么?
如果我调整类A的代码如下:
import java.lang.ref.WeakReference;
private B b;
public class A<T> extends WeakReference<T> {
public A(T referent) {
super(referent);
}
}
引用关系又有和变化?
执行gc运行下,就明了了