变量 = null 是否将其设置为垃圾回收

帮助我解决与同事的争议:在 Java 中将变量或集合设置为 null 是否有助于垃圾回收并减少内存使用量?如果我有一个长时间运行的程序,并且每个函数都可以迭代调用(可能数千次):在向父函数返回值之前,将其中的所有变量设置为 null 是否有助于减少堆大小/内存使用量?


答案 1

这是古老的表演传说。在1.0天内确实如此,但是编译器和JVM已经得到了改进,以消除需求(如果有的话)。如果您有兴趣,这篇优秀的 IBM 文章将详细介绍:Java 理论与实践:垃圾回收与性能


答案 2

从文章中:

在一种情况下,显式空值的使用不仅有用,而且实际上是必需的,那就是对对象的引用的作用范围比程序规范使用或认为有效的范围更广。这包括使用静态或实例字段来存储对临时缓冲区的引用,而不是局部变量,或者使用数组来存储运行时可能仍然可访问但程序的隐含语义无法访问的引用。

翻译:不再需要的“显式空”持久对象。(如果你愿意。“几乎需要”这句话太强了?


推荐