January 7th, 2016

Мусорщик: пометить и вычистить.

Вы не поверите, но я написал сборщик мусора! Это бесхитростный mark-and-sweep, идейно восходящий ещё к той самой первой системе Джона Маккарти.
Две маленьких оптимизашки: используются дополнительные биты для различения managed-ячеек (например, используются под дополнительное хранилище данных атома) и free-ячеек, которые можно смело пропускать в процессе маркировки. Второй бит может быть излишним, если ещё немного подумать, но и так тоже хорошо.

Пришлось переиначить формат ячеек - теперь тэг и прочие биты хранятся в отдельном байте, т.е. занимаемый системой объём ОЗУ чуточку вырос.

Collapse )