Skip to main content

Co to jest słabe odniesienie?

Słabe odniesienie jest odniesieniem do obiektu w pamięci, który nie uniemożliwia oczyszczenia obiektu przez procedury zbierania śmieci ze względu na jego związek z obiektem.Ten rodzaj odniesienia jest powszechnie stosowany, aby wyeliminować wycieki pamięci, gdy istnieją specjalne warunki, które uniemożliwiają normalne zbieranie śmieci.Algorytmy programowania wykorzystujące okrągłe odniesienie lub zawierają informacje obcych w pamięci podręcznej lub specjalnej struktury przy użyciu słabych referencji.Wykorzystanie słabych odniesień w tego typu sytuacjach pozwala na oczyszczenie nieużywanych obiektów odniesienia i powiązanych z nimi słabych odniesień.

W programowaniu komputerowym silne odniesienie jest zwykle tworzone domyślnie po utworzeniu obiektu, a pamięć zajmowana przezObiekt pozostaje przydzielony, o ile silne odniesienie pozostaje opłacalne.Silne odniesienie staje się unieważnione, a powiązane z nim pamięć o obiektach zostaje uwolniona wkrótce po silnym odniesieniu, a jego obiekt nie jest już używany przez program.W niektórych sytuacjach, takich jak aplikacje do programowania gniazda lub manipulacja obrazem, klasy używane do tworzenia działających obiektów nie mają wbudowanej pojemności do przechowywania dodatkowych informacji, które są wymagane przez określoną aplikację.Dodatkowe szczegóły dotyczące obiektów przejściowych, takich jak połączenia lub zdjęcia, muszą być przechowywane w dodatkowych obiektach pamięci podręcznej i powiązane z obiektami przejściowymi przez odniesienia.Gdy zamiast silnego odniesienia jest używane słabe odniesienie, dodatkowe informacje nie są powiązane przez odniesienie i mogą zostać usunięte z pamięci podręcznej przez zbieracz śmieci, gdy obiekt odniesienia zostanie oznaczony jako nieżyny.

Słabe klasy referencyjne są zwykleDostępne w językach, które są rozszerzone przez podsystemy Garbage Collection, w tym Java, Python, Perl, C#i .NET Framework.Jednak w C ++ programiści są zazwyczaj odpowiedzialni za zapewnienie oczyszczenia pamięci.Ten język wdrożył klasę inteligentnych wskaźników, która zapewnia niektóre z tych samych funkcji, które zapewniają słabe odniesienia i kolekcja śmieci, pomagając zmniejszyć wycieki pamięci spowodowane niewłaściwym oczyszczaniem wskaźników.

Aby dalej ułatwić zarządzanie pamięcią, języki z pobieraniem śmieci mogą dodatkowo dodatkowo mogą dodatkowo mogą dodatkowo dodatkowo dodatki do zbierania śmieciZwiększ funkcjonalność języka, zapewniając drobniejsze gradienty odniesień innych niż silne lub słabe odniesienie.Rodzaje danych, takie jak miękkie odniesienia i odniesienia fantomowe, mogą być zawarte w tych językach, co pozwala na różne poziomy powiadomienia o odzyskaniu obiektów lub powiadomienia o rozatrudnianiu.Programiści, którzy używają języków z zautomatyzowaną kolekcją śmieci, powinni zapoznać się ze wszystkimi dostępnymi klasami referencyjnymi w celu poprawy wydajności aplikacji.