我对 Java 中的垃圾收集器实现有疑问。
说我同意:
Person p1 = new Person();
Person p2 = p1;
我可以想象当 p1 引用 null 时垃圾收集器如何知道释放人员对象,但我不明白他如何收集现在有另一个指向名为 P2 的同一对象的指针的信息?
当我使用“new”运算符时,这是有道理的,因为它调用人和对象ctor来初始化该对象,并且它还可以保存ptr的地址,以便它可以知道它何时引用null。但是它怎么知道堆栈分配的指针(如“p2”)也引用了该对象,所以它知道当 p1 引用 null 时它不应该释放它?