Java 的垃圾回收 - 清空每个对象是否被认为是一种好风格?



最近有人向我建议,为了避免占用内存,Java应用程序应该尽可能销毁在该方法末尾的方法中创建的所有对象(通过将其设置为null)。

我以前很少看到这样做,从我的角度来看,这似乎首先违背了垃圾收集器的目的。当这种策略有用时,是否有任何指导方针/理由?如果你小心你的对象,你会在必要的时候面对应用程序吗?

将引用设置为null不会破坏对象。它只是消除了对它们的一个引用。为了释放内存,仍然需要垃圾收集器。对于局部作用域的变量,这没有任何区别。

许多年前,一些人建议使用这种方法来帮助垃圾回收器确定哪些对象应该被垃圾回收。今天的GC非常复杂,通常不需要开发人员的帮助。事实上,您更可能以这种方式引入错误(例如,意外地过早地使变量无效)。

这个问题以前被问过很多次。以下是另一条线索:在Java中将对象赋值为null会影响垃圾回收吗?

这不会有什么不同。垃圾收集(新分配的对象)所需的时间与不应垃圾收集的对象数成正比。换句话说:删除应该垃圾收集的对象之间的引用不会加快垃圾收集的速度,只会浪费一点时间将变量设置为null。。。

最新更新