Визуализация Алгоритмов Сборки Мусора

Большинство разработчиков воспринимают сбор мусора как нечто само собой разумеющееся.

Это стандартный процесс, периодически освобождающий память путем удаления ненужных объектов.

Но американский программист Кен Фокс захотел досконально понять и заглянуть «под капот» современных сборщиков мусора.

Кен поэкспериментировал с пятью различными алгоритмами сборки мусора и опубликовал небольшие анимации , которые наглядно демонстрируют свою работу.

Большие анимации размещены на github.com/kenfox/gc-viz .



Визуализация алгоритмов сборки мусора

Краткое объяснение инфографики.

Каждое целое изображение — это память, выделенная для программы.

Сначала он черный, то есть неиспользуемый, но постепенно начинает подсвечиваться ярко-желтым (операции записи) и ярко-зеленым (операции чтения).

Со временем записанные фрагменты темнеют, чтобы показать развитие процесса с течением времени.

Вы можете заметить, что по мере выполнения программы она начинает игнорировать определенные области памяти.

Их считают «мусором».

Первая анимация показывает, как программа работает без сборщика мусора, то есть с использованием метода очистки в конце.

Самый простой способ: нужно дождаться завершения процесса, а затем сразу все очистить.

Автор пишет, что это удивительно эффективный метод, если у вас есть способ разбить процесс на отдельные задачи.

Это то, что делает, например, веб-сервер Apache.

Визуализация алгоритмов сборки мусора

Для сравнения, вот как выглядит та же программа, но со сборщиком мусора, использующим методы подсчета ссылок.

Это еще один относительно простой метод, при котором подсчитывается количество ссылок на объект в памяти, и если оно падает до нуля, объект удаляется.

Подсчет ссылок — единственный алгоритм, который хорошо совместим с различными менеджерами ресурсов.

На анимации появились красные пиксели, соответствующие операции подсчета ссылок.

Оценить работоспособность коллектора можно также, если сразу после красной вспышки освободилась область памяти.



Визуализация алгоритмов сборки мусора

В блоге автора и на его странице на Github также можно изучить алгоритмы для сборщиков, такие как Mark-Sweep, решающий задачу обработки циклических структур в памяти (анимация справа), Mark-Compact с перемещением объектов в памяти ( анимация ) и сборщик копий, который тоже перемещает объекты в памяти, но делает это более простым способом ( анимация ).

На эту тему: Сбор мусора четко Теги: #сборка мусора #сборщик мусора #сборка мусора #подсчет ссылок #Mark-Sweep #Mark-Compact #сборщик копий #Системное программирование #Алгоритмы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.