如果存在对元素字段的引用,是否会对元素进行垃圾回收?

2022-09-04 19:52:56

class A {
    public String s;
}

A a1 = new A();
a1.s = "bla";
A a2 = new A();
a2.s = a1.s;
a1 = null;

将被垃圾回收还是允许它被收集的参考(我宁愿做一个深度复制,)?a1a1.sa2.s = new String(a1.s)

提前非常感谢!


答案 1

如果 一个包含另一个引用,并且当您设置容器对象的引用时,子对象或包含的子对象将自动符合垃圾回收的条件。objectobjectnullobject

有关详细信息,请参阅此链接


答案 2

因为只有对 的引用,指向不会影响 的垃圾回收。Asa2.sa1.sa1

即有资格获得GC,但(或)引用的对象将不符合GC的条件。a1a2.sa1.s