car_object_1
是否可以收集垃圾?有人坚持认为car_object_1
有两个参考,所以它永远不会被收集。这是真的吗?
Car createACar()
{
Car c = new MyCar(); //car_object_1 was created
return c;
}
void use_the_car()
{
Car c2 = createACar();
c2.run();
}
答案 0 :(得分:4)
不,他们在胡说八道。假设在run()
内没有任何东西存放某个引用的地方,那么该车在c2.run();
use_the_car
语句后的Car
语句后就有资格进行垃圾收集。
Java 不引用计数 - 即使是循环引用也不是问题(例如,Driver
和{{1}}彼此有引用,但没有任何内容引用其中任何一个)。
也许与你交谈的人在想一个稍微不同的情况?