Материалы книги получены с http://www.itlibitum.ru/
Внешние объекты
Объекты, которые существуют за пределами пространства сборки мусора, слегка усложняют нашу задачу. Объекты внутри пространства могут ссылаться на эти «внешние» объекты. Само по себе это не вызовет проблем, поскольку перемещаются только объекты неактивной половины. Проблемы возникают в ситуациях, когда внешние объекты ссылаются на внутренние. Вероятно, они будут использовать дескрипторы, но это заметно повысит сложность алгоритма сборки мусора/уплотнения.
Потребуются следующие изменения:
1. Каждый внешний объект также должен обладать средствами перебора указателей и соблюдать правило «дескрипторы повсюду», по крайней мере для ссылок на внутренние объекты.
2. Каждый внешний объект во время очередного прохода должен уметь помечать себя как
просмотренный.
3. Если объект в функции Copy1() является внешним и непомеченным, он помечается, а его
итератор заносится в стек, но сам объект при этом не перемещается.
Назад Содержание Далее
|