gpt4 book ai didi

java - 它是否有助于 GC 使 Java 中的局部变量为空

转载 作者:IT老高 更新时间:2023-10-28 20:45:01 31 4
gpt4 key购买 nike

在离开方法之前,我“被迫”将 myLocalVar = null; 语句添加到 finally 子句中。原因是为了帮助GC。有人告诉我下次服务器崩溃时我会在晚上收到短信,所以我最好这样做:-)。

我认为这是没有意义的,因为 myLocalVar 的范围是方法,并且一旦方法退出就会“丢失”。额外的归零只会污染代码,否则是无害的。

我的问题是,这个关于帮助 GC 的神话从何而来? (我被称为“Java 内存书籍”)你知道“权威”的任何文章更深入地解释它吗?有没有可能这不是神话,但真的有帮助?如果是这样,怎么做?将局部变量归零会造成任何危害吗?

为了澄清,方法如下所示:

void method() {
MyClass myLocalVar = null;
try {
myLocalVar = get reference to object;
... do more here ...
} finally {
if (myLocalVar != null) {
myLocalVar.close(); // it is resource which we should close
}

myLocalVar = null; // THIS IS THE LINE I AM TALKING ABOUT
}
}

最佳答案

有一篇旧的 Sun 文档, Java Platform Performance (遗憾的是,链接现在已损坏,我无法找到新的链接),它描述了一种情况,其中将超出范围的局部变量置空实际上对 GC 产生了影响。

但是,这篇论文提到了一个非常旧的 java 版本。如 this question 中所述(其中还包含论文中描述的问题的概要),这不再影响当前的 JVM 实现。

关于java - 它是否有助于 GC 使 Java 中的局部变量为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/473685/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com