С++ - язык, который изучается постепенно.ГЛАВА 16. Сборка мусора и уплотнение на месте
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Сборка мусора и уплотнение на месте

Решения из предыдущей главы, которые помогли нам превратить схему «дескрипторы повсюду» в уплотнение на месте, можно применить и в данной схеме. Это позволит организовать сборку мусора на месте и обойтись без копирования объектов в памяти. Существуют два варианта этой схемы: с уплотнением и без. В обоих случаях используется алгоритм пометки и удаления - на первом проходе определяются доступные объекты, а на втором происходит сборка мусора и при необходимости - уплотнение. Алгоритм предполагает, что в класс VoidPtr добавлен специальный «бит пометки»:

1. Снять пометку со всех VoidPtr, отсутствующих в списке свободных указателей.

2. Пометить все VoidPtr с ненулевым счетчиком ссылок; то есть пометить объекты, доступные

непосредственно из стека.

3. Для каждого только что помеченного VoidPtr пометить все VoidPtr, внедренные в объекты,

на которые они ссылаются. При этом используются те же итераторы, что и для алгоритма

Бейкера.

4. Повторять шаг 3, пока удается находить новые помечаемые объекты.

5. Удалить все VoidPtr, не помеченные и не находящиеся в списке свободных; в свою очередь, это приведет к вызову деструкторов указываемых объектов. Если вы не собираетесь выполнять уплотнение, следует вернуть память, занимаемую этими объектами.

6. Если уплотнение выполняется, перебрать все помеченные VoidPtr в порядке возрастания

адресов указываемых объектов и сместить объекты вниз для уплотнения фрагментированного пространства.

Сделать все это поэтапно несколько сложнее, но если действовать внимательно, возможно и это. Главное - помнить, что объект, ставший недоступным, доступным уже не станет. Объект, который был доступен в начале прохода, но стал недоступным во время него, можно не уничтожать. Память этого объекта будет возвращена во время следующей прогулки по памяти.


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2006. Климов Александр. All Right Reserved.
Hosted by uCoz