我被迫myLocalVar = null;
在离开方法之前将语句添加到finally子句中。原因是要帮助GC。有人告诉我,当服务器下次崩溃时,我会在晚上收到SMS,所以我最好做一遍:-)。
我认为这毫无意义,因为myLocalVar的作用域是方法,一旦方法退出,它就会“丢失”。额外的null只会污染代码,但否则无害。
我的问题是,有关帮助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的一个很旧的版本。正如该问题中提到的(其中也包含本文中描述的问题的前提),这不再影响当前的JVM实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句