Сборщики мусора работают автоматически, во время сборки мусора выполнение программы полностью приостанавливается, поэтому частая работа сборщика мусора может повлиять на производительность приложения
Наиболее популярными алгоритмами для сборщиков мусора являются Mark and Sweep GC
и Reference Counting GC
.
Есть еще
Automatic Reference Counting(ARC)
- функция Clang компилятора. Вместо процесса, который срабатывает через определенный промежуток времени и ставит выполнение программы на паузу, в данном случае инструкции по высвобождению и удержанию памяти (release
иretain
) вставляются в код во время компиляции.Память очищается автоматически во время выполнения программы без ее приостановки. Такой механизм управления памятью используется в языках Objective C и Swift
Mark and Sweep GC
Сборщик идет по объектам, начиная с корня (в случае JS это window
или global
) и помечает достижимыми те, до которых может пройти по ссылками. А те, до которых дойти не может - считает неиспользуемыми и они будут удалены.
Reference Counting GC
При таком алгоритме, каждый объект имеет счетчик ссылок, этот счетчик увеличивает или уменьшает свое значение в зависимости от того, сколько других объектов на него (объект) ссылаются. Как только его значение становится равным нулю - сборщик мусора очищает выделенную для объекта память.