我有一个关于Java中的垃圾收集器执行的问题。垃圾收集器 - 不止一个指向同一个对象
说我这样做:
Person p1 = new Person();
Person p2 = p1;
我能想象垃圾收集器是如何知道要解除人物对象时,P1为空,但我不明白他是怎么收集到的信息,现在有另一个指针到同一个名为P2的对象?
当我使用“new”运算符时,它是有道理的,因为它调用person和Object ctor来初始化该对象,并且它也可以保存ptr的地址,以便知道它何时引用null。 但它怎么能知道一个堆栈中分配指针(如“P2”)也指对象,因此它知道,当P1为空不应该释放它?
为什么这是令人惊讶的? –
你可能想看看在垃圾收集的维基百科页面:http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29 – derekerdmann