更改对象和垃圾收集器的引用

时间:2014-07-31 02:12:09

标签: java reference garbage-collection

所以在Java中如果我有两个相同类型的对象并且我将其中一个设置为另一个(两者都有相同的引用),那么垃圾收集器会被调用吗?

ClassName obj1 = new ClassName();
ClassName obj2 = new ClassName();
obj1 = obj2;

这会调用垃圾收集器吗?我之所以要问的原因是因为我正在为Android制作一款游戏而且我不能在游戏运行时调用垃圾收集器,因为我想要最好的性能。我知道“new”关键字会调用垃圾收集,但我不知道是否会这样。谢谢!

3 个答案:

答案 0 :(得分:3)

构造函数(" new"关键字)不会调用垃圾收集器。 将obj2分配给obj1后,如果没有对obj1引用的原始对象的引用,垃圾收集器可以收集它,但您不知道何时该会发生。

答案 1 :(得分:3)

简单地取消引用对象不会强制垃圾收集器运行。它只是意味着该对象有资格在将来的某个时间收集。 有多个垃圾收集策略和实现。 Oracle继续通过所有最新的Java版本提供新的GC策略。我不熟悉android,但我认为它可能使用甚至不同于Oracle的GC策略。

答案 2 :(得分:0)

obj1 指向的对象将变为符合条件的以进行垃圾回收。您无法控制何时调用垃圾收集器。