Java 为什么垃圾收集器会销毁仍然有引用的对象?
我有以下代码:Java 为什么垃圾收集器会销毁仍然有引用的对象?,java,garbage-collection,Java,Garbage Collection,我有以下代码: public class Test { public static void main(String[] args) { SomeClass oneInstance = new SomeClass(); oneInstance.otherInstance = new SomeClass(); oneInstance = null; } } class SomeClass { public SomeClass otherInstance; } 我知道JVM将在
public class Test {
public static void main(String[] args) {
SomeClass oneInstance = new SomeClass();
oneInstance.otherInstance = new SomeClass();
oneInstance = null;
}
}
class SomeClass {
public SomeClass otherInstance;
}
我知道JVM将在这两个创建的对象上启动垃圾收集器,但是otherInstance引用会发生什么呢?它仍然应该指向第二个对象如果
oneInstance
被垃圾收集,那么它就不存在了,因此,它不能引用任何东西。因此,不再有任何引用otherInstance
,也可以对其进行垃圾收集。不,@AJNeufeld,您建议的dupe目标提出了一个不同的问题,即如果一个对象持有对另一个对象的引用,该对象是否会受到垃圾收集的保护。然而,目前的问题似乎是一个骗局;我看看能否找到更好的目标。