Co to jest miękkie odniesienie?
W języku kodowania Java® odniesienia są stale tworzone do obiektów, ciągów i zmiennych, nawet jeśli programista nie jest świadomy tych odniesień. Odniesienia te komunikują się bezpośrednio z kolekcjonerem śmieci, funkcją, która gromadzi niepotrzebne informacje i wyrzuca je, aby nie wymagać pamięci. Domyślnie wszystkie odniesienia są silnymi odniesieniami i są ustawione bez żadnego kodowania, co oznacza, że nie są one wydane do poborcy śmieci. Miękkie odniesienie pozwala na wyrzucenie danych. Jest to odniesienie na środkowym poziomie dla wszystkich nieuzasadnionych odniesień.
Za każdym razem, gdy programista robi wszystko z Java®, czy to tak proste, jak tworzenie ciągu lub tworzenie złożonych funkcji, nawiązuje się. Programator nie musi pisać polecenia referencyjnego; Odniesienie jest wykonywane automatycznie i jest domyślnie silne odniesienie. Oznacza to, że dane z odniesienia nie mogą być wyrzucone, ponieważ są one powiązane z integralnymi obiektami potrzebnymi dla całego skryptu.
niektóreDane muszą jednak zostać wyrzucone, ponieważ w przeciwnym razie podejmują dużo pamięci. Na przykład, jeśli programista buduje skrypt, w którym wykorzystywane są numery seryjne lub inne tymczasowe informacje są gromadzone lub tworzone, utrzymanie tych informacji staje się szkodliwe. Program Java® odmówiłby wyrzucenia informacji, nawet gdy nie jest on niepotrzebny, a skrypt 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 kodowaniu, mówi to kolekcjonerowi śmieci, że dane mogą zostać zwolnione. Po zwolnieniu ciąg lub sekcja będzie odczytywana jako „NULL”. Garbage Collector, w zależności od ustawienia, zdecyduje, kiedy dane powinny zostać wyrzucone.
Istnieją trzy niezmienione odniesienia: miękkie odniesienie, słabe odniesienie i odniesienie fantomowe. Słabe odniesienie jest najsłabsze, a jego dane są rzucaneszybko. Miękkie odniesienia, które są najlepsze dla skryptów, w których dane tymczasowe mogą być używane kilkakrotnie, są następne w kolejce. Phantom odniesienie jest wyrzucane prawie automatycznie, w ciągu sekundy i powinno być używane oszczędnie.
Czas pozostaje miękkie odniesienie zwykle zależy od ilości pamięci na komputerze. Jeśli pamięć jest pełna, wówczas poborca śmieci najpierw zniszczy wszystkie słabe odniesienia. Gdy wszystkie słabe odniesienia znikną, a jeśli pamięć nadal musi oczyszczyć dane, wówczas miękkie odniesienia zostaną wyrzucone następne.