Визуализация алгоритмов для сборки мусора
Большинство разработчиков воспринимают сборку мусора (garbage collection) как нечто само собой разумеющееся. Это стандартный процесс, который периодически освобождает память, удаляя ненужные объекты. А вот американский программист Кен Фокс (Ken Fox) захотел досконально разобраться и заглянуть «под капот» современных сборщиков мусора.
Кен «поигрался» с пятью разными алгоритмами сборки мусора и опубликовал маленькие анимации, которые наглядно демонстрируют их работу.
Анимации большего размера выложены на github.com/kenfox/gc-viz.
Можно заметить, что по ходу выполнения программа начинает игнорировать отдельные участки памяти. Они и считаются «мусором».
На первой анимации показано, как работает программа без сборщика мусора, то есть по методу очистки в конце. Самый простой способ: нужно дождаться окончания процесса, а потом очистить всё сразу. Это на удивление эффективная техника, пишет автор, если у вас есть способ разбить процесс на отдельные задачи. Так поступает, например, веб-сервер Apache.
Подсчёт ссылок — единственный алгоритм, хорошо совместимый с разными менеджерами ресурсов.
На анимации появились красные пикселы, которые соответствуют операции подсчёта ссылок. Можно оценить и эффективность сборщика, если сразу после красной вспышки область памяти освобождается.
По теме:
Garbage Collection наглядно