В жизни каждого разработчика наступает момент, когда хочется разобраться, как что-то устроено изнутри. Уже не столько с практической точки зрения. А сколько становится интересным само по себе. Как это работает? А как работает под капотом?
(О основах работы сборщика мусора можно почитать самостоятельно, благо инфы много).
Какой GC использует Unity? Многие думают, что тот самый, который например описан в CLR via C#.
На самом деле нет!
В юнити в качестве GC используется Boehm garbage collector (Boehm GC), исходный код которого можно найти на GitHub.
Hans Boehm описывает работу этого GC следующим образом: Коллектор использует алгоритм mark-sweep. Он обеспечивает инкрементальную и поколенческую сборку мусора в операционных системах, которые обеспечивают правильную поддержку виртуальной памяти
В любой реализации GC существует понятие «достижимый» объект. Если объект достижимый, значит на него кто-то ссылается.
Если же он не достижимый, то на него никто не ссылается, и он является прете