Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么垃圾收集器会销毁仍然有引用的对象?_Java_Garbage Collection - Fatal编程技术网

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目标提出了一个不同的问题,即如果一个对象持有对另一个对象的引用,该对象是否会受到垃圾收集的保护。然而,目前的问题似乎是一个骗局;我看看能否找到更好的目标。