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 przez obiekt pozostaje przydzielona tak długo, jak silne odniesienie pozostaje opłacalne. Silne odniesienie staje się unieważnione, a jego powiązanePamięć obiektu zostaje uwolniona wkrótce po silnym odniesieniu, a jego obiekt jest oznaczony, ponieważ 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ą zwykle dostępne w językach, które są rozszerzone przez podsystemy zbierania śmieci, w tym Java, Python, Perl, C#i .NET Framework. Jednak w C ++ programiści są zazwyczaj resOgólne, aby zapewnić oczyszczenie 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 oczyszczeniem wskaźnika.

Aby dodatkowo ułatwić zarządzanie pamięcią, języki z obiektami do zbierania śmieci mogą dodatkowo zwiększyć 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.

INNE JĘZYKI