多对象引用导致的java垃圾收集

多对象引用导致的java垃圾收集,java,garbage-collection,Java,Garbage Collection,car\u object\u 1是否可以进行垃圾收集?有人认为ascar\u object\u 1有两个参考,所以它永远不会被收集。这是真的吗 Car createACar() { Car c = new MyCar(); //car_object_1 was created return c; } void use_the_car() { Car c2 = createACar(); c2.run(); } 不,他们在胡说八道。假设run()中没有任何东西将引用隐藏在某

car\u object\u 1
是否可以进行垃圾收集?有人认为as
car\u object\u 1
有两个参考,所以它永远不会被收集。这是真的吗

Car createACar()
{
  Car c = new MyCar(); //car_object_1 was created 
  return c;
}

void use_the_car()
{
  Car c2 = createACar();
  c2.run();

}

不,他们在胡说八道。假设
run()
中没有任何东西将引用隐藏在某处,则在
c2.run()之后,该车有资格进行垃圾收集中的code>语句使用车

Java不是引用计数的-即使循环引用也不是问题(例如,
汽车
驾驶员
相互引用,但没有任何引用)


也许与你交谈的人所想的情况略有不同?

不,他们在胡说八道。假设
run()
中没有任何东西将引用隐藏在某处,则在
c2.run()之后,该车有资格进行垃圾收集中的code>语句使用车

Java不是引用计数的-即使循环引用也不是问题(例如,
汽车
驾驶员
相互引用,但没有任何引用)


也许你正在与之交谈的人想到了一个稍微不同的情况?

+1:任何时候都只有一个对对象的引用,在
使用\u车返回后,就没有更多的引用了。(如果
c2.run()
之后有一个语句,则在引用超出范围之前,它将不合格。+1:在
use\u之后,任何时候都只有一个对对象的引用,car
返回后,将不再有引用。(如果
c2.run()之后有一个语句)
除非参考超出范围,否则不合格。