Co to jest miękkie odniesienie?
W języku kodowania Java® stale tworzone są odwołania do obiektów, ciągów i zmiennych, nawet jeśli programista nie jest świadomy tych odniesień. Odnośniki te komunikują się bezpośrednio z urządzeniem do usuwania śmieci, funkcją, która gromadzi niepotrzebne informacje i wyrzuca je, aby nie zajmowało już pamięci. Domyślnie wszystkie referencje są silnymi referencjami i są ustawiane bez żadnego kodowania, co oznacza, że nie są uwalniane do modułu wyrzucania elementów bezużytecznych. Miękkie odniesienie pozwala na wyrzucenie danych. Jest to referencja poziomu średniego dla wszystkich słabych referencji.
Za każdym razem, gdy programista robi cokolwiek z Javą®, tak proste jak tworzenie łańcucha lub 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 obiektami integralnymi 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 inne tymczasowe informacje są gromadzone lub tworzone, trzymanie się tych informacji staje się szkodliwe. Program Java® odmówiłby wyrzucenia informacji, nawet jeśli są niepotrzebne, a skrypt potrzebowałby coraz więcej pamięci do działania.
Określenie ciągu lub sekcji jako miękkiego odwołania, które należy umieścić w kodowaniu, informuje moduł zbierający śmieci, że dane mogą zostać zwolnione. Po zwolnieniu ciąg lub sekcja będzie czytać jako „null”. Garbage collector, w zależności od swojego ustawienia, zdecyduje, kiedy dane powinny zostać wyrzucone.
Istnieją trzy słabe odniesienia: miękkie odniesienie, słabe odniesienie i fantomowe odniesienie. Słabe odniesienie jest najsłabsze, a jego dane są szybko wyrzucane. Miękkie odniesienia, które najlepiej sprawdzają się w skryptach, w których dane tymczasowe mogą być wykorzystywane kilkakrotnie, znajdują się w kolejce. Widmowe odniesienie jest wyrzucane prawie 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, śmieciarz najpierw zniszczy wszystkie słabe referencje. Kiedy wszystkie słabe referencje znikną, a jeśli pamięć nadal będzie musiała wyczyścić dane, wówczas miękkie referencje zostaną usunięte.