帮我解决与同事的争论:在Java中将变量或集合设置为null是否有助于垃圾回收和减少内存使用?如果我有一个长时间运行的程序,并且每个函数都可能被迭代调用(可能会被调用数千次):在向父函数返回值之前将其中的所有变量设置为null是否有助于减少堆大小/内存使用量?
发布于 2010-05-29 01:33:33
这是老生常谈的表演。这在1.0天前是正确的,但编译器和JVM已经得到了改进,消除了这种需求(如果有的话)。如果您感兴趣,这篇优秀的IBM文章将深入探讨细节:Java theory and practice: Garbage collection and performance
发布于 2010-05-29 01:29:39
不一定。当不再有活动线程持有对某个对象的引用时,该对象就有资格进行垃圾回收。
当方法返回时,局部变量就会超出作用域,并且将局部变量设置为null没有任何意义--这些变量无论如何都会消失,并且如果没有其他任何东西持有这些变量所引用的对象,那么这些对象就有资格进行垃圾回收。
关键不是只看变量,而是看那些变量引用的对象,并找出程序引用这些对象的位置。
发布于 2010-05-29 01:37:38
它在局部变量上没有用处,但对于清除不再需要的实例变量(例如初始化后),它可能是有用的/需要的。
(是的是的,我知道如何应用Builder模式...)
https://stackoverflow.com/questions/2931170
复制相似问题