Поля экземпляра, элементы массива
Если есть ссылка на объект, он не может быть собран сборщиком мусора. Особенно, если этот объект (и весь граф за ним) большой, есть только одна ссылка, которая останавливает сборку мусора, и эта ссылка больше не нужна, что является неудачной ситуацией.
Патологические случаи - это объект, который сохраняет нестандартный экземпляр для всего дерева XML DOM, которое использовалось для его настройки, MBean, который не был незарегистрирован, или единственная ссылка на объект из неразвернутого веб-приложения, которая предотвращает выгрузку всего загрузчика классов .
Поэтому, если вы не уверены, что объект, содержащий ссылку, в любом случае (или даже в этом случае) будет обработан сборщиком мусора, вам следует обнулить все, что вам больше не нужно.
Переменные в области видимости:
Если вы планируете установить для локальной переменной значение null до окончания ее области видимости, чтобы она могла быть возвращена сборщиком мусора и пометила ее как «непригодную для использования с этого момента», вам следует вместо этого рассмотреть возможность помещения ее в более ограниченную область .
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; // <-- explicitly set to null
doSomethingElse();
}
становится
{
{
BigObject obj = ...
doSomethingWith(obj);
} // <-- obj goes out of scope
doSomethingElse();
}
Длинные плоские области видимости также плохо сказываются на читаемости кода. Внедрение частных методов для разбивки вещей только для этой цели тоже не является чем-то необычным.