首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否将variable = null设置为垃圾收集

是否将variable = null设置为垃圾收集
EN

Stack Overflow用户
提问于 2010-05-29 01:28:29
回答 4查看 19.2K关注 0票数 54

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-29 01:33:33

这是老生常谈的表演。这在1.0天前是正确的,但编译器和JVM已经得到了改进,消除了这种需求(如果有的话)。如果您感兴趣,这篇优秀的IBM文章将深入探讨细节:Java theory and practice: Garbage collection and performance

票数 60
EN

Stack Overflow用户

发布于 2010-05-29 01:29:39

不一定。当不再有活动线程持有对某个对象的引用时,该对象就有资格进行垃圾回收。

当方法返回时,局部变量就会超出作用域,并且将局部变量设置为null没有任何意义--这些变量无论如何都会消失,并且如果没有其他任何东西持有这些变量所引用的对象,那么这些对象就有资格进行垃圾回收。

关键不是只看变量,而是看那些变量引用的对象,并找出程序引用这些对象的位置。

票数 3
EN

Stack Overflow用户

发布于 2010-05-29 01:37:38

它在局部变量上没有用处,但对于清除不再需要的实例变量(例如初始化后),它可能是有用的/需要的。

(是的是的,我知道如何应用Builder模式...)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2931170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档