Pola instancji, elementy tablic
Jeśli istnieje odwołanie do obiektu, nie można go wyrzucić. Szczególnie jeśli ten obiekt (i cały wykres za nim) jest duży, istnieje tylko jedno odniesienie, które zatrzymuje czyszczenie pamięci i to odniesienie nie jest już potrzebne, jest to niefortunna sytuacja.
Przypadki patologiczne to obiekt, który zachowuje nieistotną instancję w całym drzewie XML DOM, które zostało użyte do jej skonfigurowania, komponent MBean, który nie został wyrejestrowany, lub pojedyncze odwołanie do obiektu z niezainstalowanej aplikacji internetowej, które zapobiega wyładowaniu całego modułu ładującego klasy .
Więc jeśli nie jesteś pewien, że obiekt, który przechowuje samo odniesienie, i tak zostanie usunięty jako śmieci (lub nawet wtedy), powinieneś wyzerować wszystko, czego już nie potrzebujesz.
Zmienne z zakresem:
Jeśli rozważasz ustawienie zmiennej lokalnej na wartość null przed końcem jej zakresu, aby mogła zostać odzyskana przez moduł wyrzucania elementów bezużytecznych i oznaczyć ją jako „bezużyteczną od teraz”, powinieneś zamiast tego rozważyć umieszczenie jej w bardziej ograniczonym zakresie .
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; // <-- explicitly set to null
doSomethingElse();
}
staje się
{
{
BigObject obj = ...
doSomethingWith(obj);
} // <-- obj goes out of scope
doSomethingElse();
}
Długie, płaskie zakresy są również ogólnie złe dla czytelności kodu. Nie jest też niczym niezwykłym wprowadzenie prywatnych metod rozbijania rzeczy tylko w tym celu.