1

我知道如何通过将对象的引用变量设置为 null 来为垃圾收集器留下删除对象的信号:

Player player_reference = new Player();
player_reference = null; 
// Now the Garbage collector knows to release all the memory related to this object.

但是如何通过对象的类将引用变量设置为 null 呢?

class Player {
    public void doSomthing() {
        if(condition) {
            // some code which set the reference variable to null.
        }
    }
}
4

1 回答 1

9

我知道如何通过将引用变量设置为 null 来为垃圾收集器留下删除对象的信号

这并不是真正的“信号”——它只是确保有问题的变量不会阻止垃圾收集。你真的,真的需要清楚变量、引用和对象之间的区别。这个问题毫无意义:

但是如何通过对象类将引用变量设置为 null 呢?

什么参考?可能有多个变量,它们的值都是对同一对象的引用。或者确实可能没有这样的变量 - 您可以通过一些中间表达式调用该方法:

foo().bar().doSomething();

在这种情况下,您希望将哪个变量设置为 null?

当在任何线程中无法再访问该对象时,该对象将有资格进行垃圾收集。您不需要手动删除它,或“通知”垃圾收集器。它会自然发生。

于 2013-02-26T14:19:05.143 回答