所以在Java中如果我有两个相同类型的对象并且我将其中一个设置为另一个(两者都有相同的引用),那么垃圾收集器会被调用吗?
ClassName obj1 = new ClassName();
ClassName obj2 = new ClassName();
obj1 = obj2;
这会调用垃圾收集器吗?我之所以要问的原因是因为我正在为Android制作一款游戏而且我不能在游戏运行时调用垃圾收集器,因为我想要最好的性能。我知道“new”关键字会调用垃圾收集,但我不知道是否会这样。谢谢!
答案 0 :(得分:3)
构造函数(" new"关键字)不会调用垃圾收集器。
将obj2
分配给obj1
后,如果没有对obj1
引用的原始对象的引用,垃圾收集器可以收集它,但您不知道何时该会发生。
答案 1 :(得分:3)
简单地取消引用对象不会强制垃圾收集器运行。它只是意味着该对象有资格在将来的某个时间收集。 有多个垃圾收集策略和实现。 Oracle继续通过所有最新的Java版本提供新的GC策略。我不熟悉android,但我认为它可能使用甚至不同于Oracle的GC策略。
答案 2 :(得分:0)
obj1 指向的对象将变为符合条件的以进行垃圾回收。您无法控制何时调用垃圾收集器。