С++ - язык, который изучается постепенно.ГЛАВА 16. Сборка мусора и уплотнение на месте
создание сайта визитки
Студия Web-дизайна, создание, раскрутка сайтов интернет реклама, подача объявлений на доски, продвижение и сопровождение сайтов
Карта сайта | Зарабатывайте с нами  | Сделать заказ
Наши услуги
Справочники
Самоучитель Internet Explorer
PHP и MySQL
Компьютерные сети
Самоучитель о С++
Новости
Новости для PDA
Реклама
Студия WebKuban.Ru - Создание и поддержка сайтов, интернет магазинов Каталог сайтов Всего.RU Интернет-каталог WWW.SABRINA.RU Refo.ru - русские сайты Каталог HeadNet.Ru Интернет-магазин цифровых товаров Каталог Ресурсов Интернет
Реклама
Язык С++
По последним данным, на рынке продается по крайней мере 2 768 942 книги о С++, не говоря уже о всевозможных курсах, обучающих программах, журналах и семинарах с коктейлями.
И все же в этом изобилии наблюдается удручающее однообразие.
Добро пожаловать на сайт студии Web-дизайна "САР"


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

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

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

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

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

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

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

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

Бейкера.

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

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

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

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

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


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



Если желаете высказать своё мнение по поводу различных операционных систем,прошу сюда


DIGITA.ru: Телевизоры, DVD-плееры, видеомагнитофоны, видео-плееры. Аппаратура Hi-End класса

Home  Учебник по записи CD  Бесплатный хостинг  Поиск  Справочник Web дизайнера Язык HTML PHP и MySQL Компьютерные сети С++ Мнения об ОС E-mail me

Copyright 2006. Климов Александр. All Right Reserved.
Используются технологии uCoz