Сборка мусора в V8: Scavenger, Mark and Sweep и Tri-color Marking
В части 1 мы выяснили, что объекты в Heap не освобождаются сами по себе этим занимается Garbage Collector. Но как именно GC решает, что можно удалить? Если подумать, задача не такая очевидная: объект не нужен - понятие логическое, а GC работает с физическим графом ссылок. Ответ в том, что GC не пытается угадать намерения программы. Он задаёт более простой вопрос: можно ли добраться до этого объекта из работающего кода? Если нельзя объект недостижим, и никакой код уже не сможет его использовать. Значит, память можно вернуть. Алгоритм, реализующий эту логику, называется Mark and Sweep .
https://habr.com/ru/articles/1003728/
#v8 #javascript #память #garbage_collector #garbage_collector_javascript #nodejs #node #алгоритмы #программирование #memory