最近有人向我建议,为了避免占用内存,Java应用程序应始终在可能的情况下销毁方法末尾方法中创建的所有对象(通过将其设置为null)。
我之前没有经常这样做,从我的角度来看,它似乎首先打败了垃圾收集器的目的。当这个策略有用时,是否有任何指导/推理?如果您对对象小心谨慎,是否有必要面对申请?
答案 0 :(得分:7)
设置对null的引用不会破坏对象。它只是消除了对它们的一个引用。为了释放内存,仍然需要垃圾收集器。对于本地范围的变量,这没有任何区别。
答案 1 :(得分:3)
许多年前,有些人建议将其作为一种帮助垃圾收集器识别哪些对象应该被垃圾收集的方法。今天的GC非常复杂,通常不需要开发人员的帮助。事实上,你更有可能以这种方式引入错误(例如,意外地过早地使变量归零)。
之前曾多次询问过这个问题。这是另一个主题: Does assigning objects to null in Java impact garbage collection?
答案 2 :(得分:0)
这不会有所作为。垃圾收集所花费的时间(新分配的对象)与不垃圾收集的对象数量成正比。换句话说:删除应该被垃圾收集的对象之间的引用不会加速垃圾收集,只会浪费一点时间将变量设置为null ...