假设我有一个类,它加载一个文件,然后调用另一个方法对该文件执行某些操作。例如,计算文件中的单词数。
在 CountWords 类中,创建了许多对象/集合来获取单词数。该方法运行,找到单词数,然后将其返回给调用类。
我的问题是,当控制权返回到调用类时,CountWords 类中创建的所有对象/集合是否都会“销毁”,还是保留在内存中?如果是后者,我是否必须在退出类之前将每个对象设置为 null 以将它们标记为集合?
最佳答案
我们通常不会精确控制 Java 对象何时被销毁。它会在变得不可访问一段时间后被销毁 - 换句话说,当在任何范围内没有进一步引用它时。
如果您创建一个对象,并将对其的引用存储在另一个对象的字段中,则只要具有对该对象的引用的对象可访问,您创建的对象就继续可访问。
如果你有这样的代码
public void run() {
Foo a = new Foo();
System.out.println("This method is finished");
}
那么一旦 run
完成,您创建的 Foo
将无法访问,因为没有更多变量引用它。 Foo
将在一段时间后被销毁。当然,除非 Foo
的构造函数做了一些魔法,将自己注册到某个令人讨厌的 static
数据存储中。
因此,一般来说,您不需要将引用设置为 null 来销毁对象。从垃圾收集器的角度来看,让这些引用超出范围就和将它们设置为 null 一样好。
关于Java - 当创建类关闭时对象引用是否会被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293404/