我知道如何通过将其引用变量设置为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.
}
}
}
答案 0 :(得分:9)
我知道如何通过将其引用变量设置为null来为垃圾收集器留下信号以删除对象
那不是一个"信号" - 它只是确保有问题的变量不会阻止垃圾收集。你真的,真的需要清楚变量,引用和对象之间的差异。这个问题毫无意义:
但是如何通过对象类将引用变量设置为null?
有什么参考?可能存在多个变量,这些变量都具有对同一对象的引用的值。或者确实可能有 no 这样的变量 - 你可以通过一些中间表达式调用该方法:
foo().bar().doSomething();
在这种情况下,您希望将哪个变量设置为null?
如果在任何线程中无法再访问该对象,则该对象将有资格进行垃圾回收。您不需要手动删除它,或者"发出信号"垃圾收集器。它会自然而然地发生。