Как и было обещано в моем предыдущем блоге, я пишу о некоторых методах, используемых различными языками программирования для автоматического сбора мертвых/больше не используемых объектов во время выполнения.
В целом существует три схемы/метода, которые являются основой сбора мусора. Я постараюсь написать об этих трех как можно более прямолинейно. Кроме того, я пойду на шаг вперед и расскажу о четвертой технике, разработанной с помощью комбинации трех схем. Давайте начнем!
Идея, лежащая в основе этого типа сборки мусора, состоит в том, чтобы отслеживать использование объекта в каждой точке программы. Эта идея означает, что как только объект становится мусором (чтобы узнать, когда объект становится пригодным для отходов, прочитайте geeksforgeeks), пространство, занимаемое объектом, восстанавливается путем добавления адреса свободного пространства в список свободных. Затем новые объекты выделяются путем сопоставления требуемого пространства с доступными пространствами в списке свободных. Эта концепция кажется очень привлекательной, потому что имеет смысл производить сборку мусора, как только он появится. Так ли это? Сделайте шаг назад из виртуального мира и войдите в реальный мир. Вы бежите к мусорному контейнеру в конце своей полосы каждый раз, когда вам нужно выбросить пачку жевательной резинки? Ты ведь не знаешь, верно? Вы собираете мусор в мусорное ведро, а когда оно заполняется, идете в мусорное ведро. В информатике это известно как ленивый подход, то есть предпринимать действия только тогда, когда это необходимо. Это подводит нас ко второму методу, доступному для сбора мусора.
Давайте снова войдем в реальный мир. Всякий раз, когда ваша мусорная корзина заполнена, вы прекращаете все свои основные работы (ну, это может быть и просмотр видео Бейонсе) и выбрасываете мусорное ведро в мусорный контейнер в конце вашей полосы. Эта концепция, согласно которой процесс прекращает делать что-либо еще и выбрасывает мусор, известна как “Остановить мир”. Пометка и зачистка – это один из алгоритмов, который основан на остановке мира. Всякий раз, когда свободная память для выделения заканчивается, сборщик мусора запускается и начинает работать. Поскольку это ясно, давайте посмотрим, как работает алгоритм, как только процесс остановлен. Он работает в две фазы. Во-первых, он обращается ко всем регистрам, глобальным переменным и локальным переменным {это называется корневым набором} и обращается ко всем объектам, доступным из корневого набора. Он помечает эти достижимые объекты (живые объекты) и завершает работу. Затем идет вторая фаза очистки всей кучи. Во время этой очистки все, что не помечено, является мусором, и их соответствующие адреса заносятся в список свободных для будущих распределений объектов.
Написав этот блог, я чувствую, что дал много информации в очень немногих словах с небольшим количеством оборванных фрагментов информации. Итак, я остановлюсь здесь на этом блоге и продолжу о двух других типах сборщиков мусора в своем следующем блоге.
До тех пор, какие языки вы используете, и есть ли у вас какие-либо идеи о том, какие типы сборщиков мусора они используют.
Счастливого кодирования.
Оригинал: “https://dev.to/ishanigupta27/all-the-ways-to-collect-garbage-14k8”