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.