Я был вынужден принудительно добавить инструкцию myLocalVar = null;
в предложение finally непосредственно перед тем, как оставить метод. Причина в том, чтобы помочь GC. Мне сказали, что я получу SMS в течение ночи, когда в следующий раз произойдет сбой сервера, поэтому я лучше сделал это: -).
Я думаю, что это бессмысленно, так как 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
}
}