Большинство разработчиков воспринимают сбор мусора как нечто само собой разумеющееся.
Это стандартный процесс, периодически освобождающий память путем удаления ненужных объектов.
Но американский программист Кен Фокс захотел досконально понять и заглянуть «под капот» современных сборщиков мусора.
Кен поэкспериментировал с пятью различными алгоритмами сборки мусора и опубликовал небольшие анимации , которые наглядно демонстрируют свою работу.
Большие анимации размещены на github.com/kenfox/gc-viz .
Краткое объяснение инфографики.
Каждое целое изображение — это память, выделенная для программы.
Сначала он черный, то есть неиспользуемый, но постепенно начинает подсвечиваться ярко-желтым (операции записи) и ярко-зеленым (операции чтения).
Со временем записанные фрагменты темнеют, чтобы показать развитие процесса с течением времени.
Вы можете заметить, что по мере выполнения программы она начинает игнорировать определенные области памяти.
Их считают «мусором».
Первая анимация показывает, как программа работает без сборщика мусора, то есть с использованием метода очистки в конце.
Самый простой способ: нужно дождаться завершения процесса, а затем сразу все очистить.
Автор пишет, что это удивительно эффективный метод, если у вас есть способ разбить процесс на отдельные задачи.
Это то, что делает, например, веб-сервер Apache.
Для сравнения, вот как выглядит та же программа, но со сборщиком мусора, использующим методы подсчета ссылок.
Это еще один относительно простой метод, при котором подсчитывается количество ссылок на объект в памяти, и если оно падает до нуля, объект удаляется.
Подсчет ссылок — единственный алгоритм, который хорошо совместим с различными менеджерами ресурсов.
На анимации появились красные пиксели, соответствующие операции подсчета ссылок.
Оценить работоспособность коллектора можно также, если сразу после красной вспышки освободилась область памяти.
В блоге автора и на его странице на Github также можно изучить алгоритмы для сборщиков, такие как Mark-Sweep, решающий задачу обработки циклических структур в памяти (анимация справа), Mark-Compact с перемещением объектов в памяти ( анимация ) и сборщик копий, который тоже перемещает объекты в памяти, но делает это более простым способом ( анимация ).
На эту тему: Сбор мусора четко Теги: #сборка мусора #сборщик мусора #сборка мусора #подсчет ссылок #Mark-Sweep #Mark-Compact #сборщик копий #Системное программирование #Алгоритмы
-
Подготовка К Двухфакторной Аутентификации
19 Oct, 24 -
Utorrent 2.0, Мы Торопились С Utp
19 Oct, 24 -
Майспейс: Перезагрузка
19 Oct, 24 -
Как Выбрать Психолога/Психотерапевта?
19 Oct, 24 -
Рбк Покупает Платежную Систему Rupay
19 Oct, 24 -
10 Тыс. Победителей
19 Oct, 24