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