Co to jest słaby odnośnik?

Słabe odniesienie to odwołanie do obiektu w pamięci, który nie zapobiega czyszczeniu obiektu przez procedury czyszczenia pamięci ze względu na jego powiązanie z tym obiektem. Ten typ odniesienia jest powszechnie używany w celu wyeliminowania wycieków pamięci, gdy istnieją specjalne warunki, które uniemożliwiają normalne odśmiecanie pamięci. Algorytmy programowania, które wykorzystują odwołanie cykliczne lub przechowują obce informacje w pamięci podręcznej lub specjalnej strukturze, korzystają ze słabych odniesień. Wykorzystanie słabych referencji w tego typu sytuacjach pozwala na usunięcie nieużywanych obiektów referencyjnych i powiązanych z nimi słabych referencji.

W programowaniu komputerowym silne odniesienie jest zwykle tworzone domyślnie podczas tworzenia obiektu, a pamięć zajmowana przez obiekt pozostaje przydzielona tak długo, jak silne odniesienie pozostaje opłacalne. Silne odwołanie zostaje unieważnione, a pamięć powiązanego obiektu zostaje zwolniona wkrótce po silnym odwołaniu, a jego obiekt jest oflagowany jako nieużywany przez program. W niektórych sytuacjach, takich jak programowanie gniazd lub aplikacje do manipulacji obrazami, klasy używane do tworzenia obiektów roboczych nie mają wbudowanej zdolnoś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 obrazy, muszą być przechowywane w dodatkowych obiektach pamięci podręcznej i połączone z obiektami przejściowymi za pomocą odniesień. Gdy zamiast silnego odniesienia zostanie użyte słabe odwołanie, dodatkowe informacje nie są powiązane przez odwołanie i mogą zostać usunięte z pamięci podręcznej przez moduł czyszczenia pamięci, gdy obiekt odniesienia zostanie oznaczony jako nieżywotny.

Słabe klasy referencyjne są zwykle dostępne w językach, które są rozszerzane przez podsystemy odśmiecania, w tym Java, Python, Perl, C # i .NET. Jednak w C ++ programiści są zazwyczaj odpowiedzialni za zapewnienie czyszczenia pamięci. Ten język zaimplementował inteligentną klasę wskaźnika, która zapewnia niektóre z tych samych funkcji, które zapewniają słabe odwołania i odśmiecanie, pomagając zmniejszyć wycieki pamięci spowodowane nieprawidłowym czyszczeniem wskaźnika.

Aby jeszcze bardziej ułatwić zarządzanie pamięcią, języki z urządzeniami do wyrzucania elementów bezużytecznych mogą dodatkowo zwiększyć funkcjonalność języka, zapewniając dokładniejsze gradienty odniesień innych niż mocne lub słabe odniesienia. Typy danych, takie jak odniesienia miękkie i odniesienia fantomowe, mogą być zawarte w tych językach, co pozwala na różne poziomy przechwytywania lub powiadamiania o przydziałach obiektów. Programiści używający języków z automatycznym odśmiecaniem pamięci powinni zapoznać się ze wszystkimi dostępnymi klasami referencyjnymi w celu poprawy wydajności aplikacji.

INNE JĘZYKI

Czy ten artykuł był pomocny? Dzięki za opinie Dzięki za opinie

Jak możemy pomóc? Jak możemy pomóc?