Как и было обещано в моем предыдущем блоге, я пишу о некоторых методах, используемых разными языками программирования для автоматического сбора мертвых / неиспользуемых объектов во время выполнения.
Есть три схемы / техники, лежащие в основе сборки мусора. Я постараюсь написать об этих трех как можно более прямолинейно. Кроме того, я сделаю шаг вперед и рассмотрю четвертую технику, разработанную путем комбинации трех схем. Давайте начнем!

1. Подсчет ссылок

Идея этого типа сборки мусора состоит в том, чтобы отслеживать использование объекта в каждой точке программы. Это означает, что как только объект становится мусором (чтобы узнать, когда объект становится пригодным для мусора, прочтите geeksforgeeks), пространство, занятое объектом, освобождается путем помещения адреса свободного пространства в список свободных. Затем новые объекты выделяются путем сопоставления необходимого пространства с доступными пространствами в свободном списке. Эта концепция кажется очень привлекательной, потому что имеет смысл выполнять сборку мусора, как только он появляется. Является ли? Сделайте шаг назад из виртуального мира и войдите в реальный мир. Вы бежите к мусорному контейнеру в конце переулка каждый раз, когда вам нужно выбросить пакет с жевательной резинкой? А ты ведь не знаешь? Вы собираете мусор в свой мусорный бак, а когда он заполнен, вы отправляетесь в мусорный бак. В информатике это известно как ленивый подход, т. Е. Принятие мер только тогда, когда это необходимо. Это подводит нас ко второму способу сборки мусора.

2. Отметить и развернуть.

Давайте снова войдем в реальный мир. Всякий раз, когда ваша мусорная корзина заполнена, вы останавливаете все свои важные дела (ну, это тоже может смотреть видео Бейонсе) и сваливаете мусор в мусорный контейнер в конце вашей полосы движения. Эта концепция, согласно которой процесс перестает делать что-либо еще и выбрасывает мусор, известна как «Stop-the-World». Mark and Sweep - один из алгоритмов, основанных на Stop the World. Как только освобождение памяти для выделения заканчивается, включается сборщик мусора и начинает работать. Поскольку это ясно, давайте посмотрим, как работает алгоритм после того, как процесс остановлен. Он работает за счет двух фаз. Во-первых, он переходит ко всем регистрам, глобальным переменным и локальным переменным {Это называется корневым набором} и переходит ко всем объектам, доступным из корневого набора. Он отмечает эти достижимые объекты (живые объекты) и завершает работу. Затем следует второй этап подметания всей кучи. Во время этой очистки все, что не отмечено, является мусором, а соответствующие адреса вводятся в свободный список для будущего размещения объектов.
Написав этот блог, я чувствую, что предоставил много информации в очень коротких словах с несколькими свисающими кусочки информации. Итак, я остановлюсь на этом блоге и продолжу о двух других типах сборщиков мусора в моем следующем блоге.
А пока, какие языки вы используете, и знаете ли вы, какие типы сборщиков мусора они используют.

Удачного кодирования.