Генерации объектов

Генерации объектов

Когда среда CLR пытается найти недоступные объекты, это не значит, что будет рассмотрен буквально каждый объект, размещенный в управляемой динамической памяти. Очевидно, что это требовало бы слишком много времени, особенно в реальных (т.е. больших) приложениях.

Чтобы оптимизировать процесс, каждый объект в динамической памяти приписывается определенной "генерации". Идея достаточно проста: чем дольше объект существует в динамической памяти, тем более вероятно то, что он должен там и оставаться. Например, объект, реализующий Main() будет находиться в памяти до тех пор, пока программа не закончится. С другой стороны, объекты, которые недавно размещены в динамической памяти, вероятнее всего, станут вскоре недостижимыми (например, объекты, созданные в рамках области видимости метода). При этих предположениях каждый объект в динамической памяти можно отнести к одной из следующих категорий.

Генерация 0. Новые, только что размещенные объекты, которые еще никогда же предназначались для использования в процессе сборки мусора.

Генерация 1. Объекты, которые "пережили" одну сборку мусора (т.е. были обозначены для использования в процессе сборки мусора, но не были удалены по той причине, что в динамической памяти оказалось достаточно места).

Генерация 2. Объекты, 'пережившие" несколько сборок мусора.

Сборщик мусора сначала рассматривает объекты генерации 0. Если в результате выявления ненужных объектов и соответствующей чистки свободной памяти оказывается достаточно, все оставшиеся объекты относятся к генерации 1. Чтобы понять, как генерации объектов влияют на процесс сборки мусора, рассмотрите рис. 5.5. где схематически показано, как некоторое множество "выживших" объектов (A, B и E) генерации 0 переводятся в следующую генерацию после обновления остальной части памяти.

Рис 5.5. Объекты генерации 0, которые "пережили" сборку мусора, переходят к генерации 1

Если все объекты генерации 0 уже рассмотрены, но памяти все равно еще не достаточно, то рассматривается "достижимость" объектов генерации 1 и выполняется сборка мусора среди этих объектов. "Выжившие" объекты генерации 1 переходят к генерации 2. Если сборщик мусора все еще требует дополнительной памяти, тогда оцениваются объекты генерации 2. Здесь, если объект генерации 2 "выживает" в процессе сборки мусора, то такой объект сохраняет принадлежность к генерации 2, поскольку это предел для генераций объектов.

Итак, с помощью назначения признака генерации объектам в динамической памяти более новые объекты (например, локальные переменные) будут удаляться быстрее, тогда как старые объекты (такие как, например, объект приложения программы) будут "беспокоиться" значительно реже.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Переименование объектов

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Переименование объектов Имя, которое вы задали при создании файла или папки, не есть догма. В любой момент вы можете его изменить.Для этого выделите нужный объект, щелкните кнопкой мыши на нем и в открывшемся меню выберите команду Переименовать. Совет Если лень возиться с


Удаление объектов

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Удаление объектов Увы… Все, что когда-то появилось, с неизбежностью когда-то исчезнет.В переводе на компьютерный язык: любой файл или папку так же легко удалить, как и создать. Удалять лишние файлы – не признак скрытой агрессивности, а жестокая необходимость. Когда файлов


Трансформация объектов

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Трансформация объектов Начав работать с объектами, вы быстро узнаете, что практически невозможно сразу нарисовать объект нужного размера и в нужном месте. Поэтому, как только мы начинаем создавать объекты, сразу же необходимо учиться их перемещать, увеличивать,


Стопка объектов

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Стопка объектов Научившись перемещать объекты в плоскости (по высоте и ширине), мы должны научиться перемещать объекты и по третьей координате – «глубине». Речь идет о том, что объекты в InDesign могут и будут перекрывать друг друга, если находятся в одном районе страницы, а


Группировка объектов

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Группировка объектов При работе часто приходится использовать большое количество объектов и на определенной стадии мы начинаем оперировать не отдельными объектами, а их группами, объединяя по нескольку объектов в один.К примеру, создав колонтитул с использованием


Стили объектов

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Стили объектов Для унифицированного оформления объектов в Adobe InDesign мы можем использовать стили объектов. Применение стилей объектов позволяет быстро и одинаково оформлять текстовые фреймы (например, при создании врезок), фреймы с помещенными изображениями (для создания


Использование других методов для генерации первичных ключей

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Использование других методов для генерации первичных ключей Вовсе не обязательно, чтобы каждая таблица имела первичный ключ, но в практическом отношении желательно, чтобы было именно так. Важность первичного ключа в таблице трудно переоценить. Как отмечалось в


1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ Известно, что люди плохо справляются с деталями. Соответственно, любой вид ручного создания программ является источником задержек и ошибок. Чем проще и


1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ Известно, что люди плохо справляются с деталями. Соответственно, любой вид ручного создания программ является источником задержек и ошибок. Чем проще и


1.3. Живучесть объектов IPC

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

1.3. Живучесть объектов IPC Можно определить живучесть (persistence) любого объекта IPC как продолжительность его существования. На рис. 1.2 изображены три возможные группы, к которым могут быть отнесены объекты по живучести. Рис. 1.2. Живучесть объектов IPC1. Объект IPC, живучесть


Защита объектов ядра и приватных объектов

Из книги автора

Защита объектов ядра и приватных объектов Многие объекты, такие как процессы, потоки или мьютексы, являются объектами ядра (kernel objects). Для получения и установки дескрипторов безопасности ядра используются функции GetKernelObjectsSecurity и SetKernelObjectsSecurity, аналогичные функциям защиты


Выбор способа генерации пары ключей

Из книги автора

Выбор способа генерации пары ключей Генерация ключей может осуществляться централизованно (УЦ или по его поручению РЦ) либо индивидуально (конечным субъектом). В большинстве случаев пары ключей создаются конечными субъектами, которые должны иметь программные или


Выводы по алгоритмам генерации случайных чисел

Из книги автора

Выводы по алгоритмам генерации случайных чисел В предыдущем разделе были рассмотрены несколько достаточно простых генераторов случайных чисел. Наилучшие последовательности чисел позволяют получить два последних генератора, но, к сожалению, они выдвигают жесткие


Выбор объектов

Из книги автора

Выбор объектов Большинство команд редактирования AutoCAD требует предварительного указания объектов для работы с ними. Выбранные объекты – один или несколько – называются набором. Он может, например, включать в себя все объекты определенного цвета или объекты,


Копирование объектов

Из книги автора

Копирование объектов Команда COPY осуществляет копирование объектов. Она вызывается из падающего меню Modify ? Сору или щелчком на пиктограмме Сору на панели инструментов Modify.Запросы команды COPY:Select objects: – выбрать объектыSelect objects: – нажать клавишу Enter для завершения выбора


Перемещение объектов

Из книги автора

Перемещение объектов Команда MOVE осуществляет перемещение объектов. Она вызывается из падающего меню Modify ? Move или щелчком на пиктограмме Move на панели инструментов Modify.Запросы команды MOVE:Select objects: – выбрать объектыSelect objects: – нажать клавишу Enter для завершения выбора