W języku programowania Java® stale tworzone są odniesienia do obiektów, ciągów znaków i zmiennych, nawet jeśli programista nie jest świadomy tych odniesień. Te odniesienia komunikują się bezpośrednio z garbage collectorem, funkcją, która zbiera niepotrzebne informacje i wyrzuca je, aby nie zajmowały już pamięci. Domyślnie wszystkie odniesienia są silnymi odniesieniami i są ustawiane bez żadnego kodowania, co oznacza, że nie są udostępniane garbage collectorowi. Miękkie odniesienie pozwala na wyrzucenie danych. Jest to odniesienie średniego poziomu dla wszystkich niemocnych odwołań.
Za każdym razem, gdy programista robi coś z Javą®, czy to tak proste, jak tworzenie ciągu znaków czy tworzenie złożonych funkcji, pojawia się odwołanie. Programista nie musi pisać polecenia referencyjnego; odniesienie jest tworzone automatycznie i domyślnie jest silnym odniesieniem. Oznacza to, że danych z referencji nie można wyrzucić, ponieważ są one połączone z integralnymi obiektami potrzebnymi dla całego skryptu.
Niektóre dane należy jednak wyrzucić, ponieważ w przeciwnym razie zajmują dużo pamięci. Na przykład, jeśli programista zbuduje skrypt, w którym używane są numery seryjne lub gromadzone lub tworzone są inne tymczasowe informacje, przechowywanie tych informacji staje się szkodliwe. Program Java® odmówiłby wyrzucenia informacji, nawet jeśli są niepotrzebne, a skrypt do działania potrzebowałby coraz więcej pamięci.
Określając ciąg lub sekcję jako miękkie odniesienie, które należy umieścić w kodzie, informuje to garbage collector, że dane mogą zostać uwolnione. Po zwolnieniu ciąg lub sekcja będzie odczytywana jako „null”. Odśmiecacz, w zależności od ustawienia, zdecyduje, kiedy dane mają zostać wyrzucone.
Istnieją trzy niemocne odniesienia: miękkie odniesienie, słabe odniesienie i odniesienie fantomowe. Słabe odniesienie jest najsłabsze, a jego dane są szybko wyrzucane. W następnej kolejności są miękkie referencje, które najlepiej sprawdzają się w skryptach, w których dane tymczasowe mogą być używane kilka razy. Odwołanie fantomowe jest wyrzucane niemal automatycznie, w ciągu sekundy i powinno być używane oszczędnie.
Czas pozostawania miękkiego odniesienia zwykle zależy od ilości pamięci w komputerze. Jeśli pamięć jest pełna, garbage collector najpierw zniszczy wszystkie słabe odniesienia. Kiedy wszystkie słabe referencje znikną, a pamięć nadal wymaga wyczyszczenia danych, miękkie referencje zostaną wyrzucone jako następne.