Вот я нифига не понимаю в сборке мусора. Точнее, я такой прочитал книжку с драконом и думал, что понимал.
Там, например, какой-нибудь mark-and-sweep алгоритм описывался с применением фраз и словосочетаний: «корневое множество» и «если в объекте есть ссылки на другие объекты».
А тут я посмотрел на пример boehm-gc, про который ранее слышал, и прям удивился: там всего-то есть свои реализации malloc и free (вызов free опционален). И всё.
И вот как же оно поддерживает это самое корневое множество? (В HP презентации написано, что «смотрит в регистры, на стек [...]». Что прям так и смотрит во все регистры, которые могут содержать указатели и догадывается, его ли это клиент?
Как этот сборщик мусора работает с массивами? Если у меня такой код:
int array[500];
....Работаем с array
return array+200;
А если у меня есть объект, который доступен только из другого? Например, я сделал списки на основе cons-ячеек. Как он поймет, что они достижимы?
Ну в общем, вот мои несколько сумбурно сформулированные вопросы. Но я знаю, тут есть много дипломированных специалистов мирового уровня с всякими регалиями и прочим. И они уж точно смогут расшифровать, что я понаписал и ответить. Спасибо.