Генерации объектов
Генерации объектов
Когда среда CLR пытается найти недоступные объекты, это не значит, что будет рассмотрен буквально каждый объект, размещенный в управляемой динамической памяти. Очевидно, что это требовало бы слишком много времени, особенно в реальных (т.е. больших) приложениях.
Чтобы оптимизировать процесс, каждый объект в динамической памяти приписывается определенной "генерации". Идея достаточно проста: чем дольше объект существует в динамической памяти, тем более вероятно то, что он должен там и оставаться. Например, объект, реализующий Main() будет находиться в памяти до тех пор, пока программа не закончится. С другой стороны, объекты, которые недавно размещены в динамической памяти, вероятнее всего, станут вскоре недостижимыми (например, объекты, созданные в рамках области видимости метода). При этих предположениях каждый объект в динамической памяти можно отнести к одной из следующих категорий.
• Генерация 0. Новые, только что размещенные объекты, которые еще никогда же предназначались для использования в процессе сборки мусора.
• Генерация 1. Объекты, которые "пережили" одну сборку мусора (т.е. были обозначены для использования в процессе сборки мусора, но не были удалены по той причине, что в динамической памяти оказалось достаточно места).
• Генерация 2. Объекты, 'пережившие" несколько сборок мусора.
Сборщик мусора сначала рассматривает объекты генерации 0. Если в результате выявления ненужных объектов и соответствующей чистки свободной памяти оказывается достаточно, все оставшиеся объекты относятся к генерации 1. Чтобы понять, как генерации объектов влияют на процесс сборки мусора, рассмотрите рис. 5.5. где схематически показано, как некоторое множество "выживших" объектов (A, B и E) генерации 0 переводятся в следующую генерацию после обновления остальной части памяти.

Рис 5.5. Объекты генерации 0, которые "пережили" сборку мусора, переходят к генерации 1
Если все объекты генерации 0 уже рассмотрены, но памяти все равно еще не достаточно, то рассматривается "достижимость" объектов генерации 1 и выполняется сборка мусора среди этих объектов. "Выжившие" объекты генерации 1 переходят к генерации 2. Если сборщик мусора все еще требует дополнительной памяти, тогда оцениваются объекты генерации 2. Здесь, если объект генерации 2 "выживает" в процессе сборки мусора, то такой объект сохраняет принадлежность к генерации 2, поскольку это предел для генераций объектов.
Итак, с помощью назначения признака генерации объектам в динамической памяти более новые объекты (например, локальные переменные) будут удаляться быстрее, тогда как старые объекты (такие как, например, объект приложения программы) будут "беспокоиться" значительно реже.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Защита объектов ядра и приватных объектов
Защита объектов ядра и приватных объектов Многие объекты, такие как процессы, потоки или мьютексы, являются объектами ядра (kernel objects). Для получения и установки дескрипторов безопасности ядра используются функции GetKernelObjectsSecurity и SetKernelObjectsSecurity, аналогичные функциям защиты
Переименование объектов
Переименование объектов Имя, которое вы задали при создании файла или папки, не есть догма. В любой момент вы можете его изменить.Для этого выделите нужный объект, щелкните кнопкой мыши на нем и в открывшемся меню выберите команду Переименовать. Совет Если лень возиться с
Удаление объектов
Удаление объектов Увы… Все, что когда-то появилось, с неизбежностью когда-то исчезнет.В переводе на компьютерный язык: любой файл или папку так же легко удалить, как и создать. Удалять лишние файлы – не признак скрытой агрессивности, а жестокая необходимость. Когда файлов
Трансформация объектов
Трансформация объектов Начав работать с объектами, вы быстро узнаете, что практически невозможно сразу нарисовать объект нужного размера и в нужном месте. Поэтому, как только мы начинаем создавать объекты, сразу же необходимо учиться их перемещать, увеличивать,
Стопка объектов
Стопка объектов Научившись перемещать объекты в плоскости (по высоте и ширине), мы должны научиться перемещать объекты и по третьей координате – «глубине». Речь идет о том, что объекты в InDesign могут и будут перекрывать друг друга, если находятся в одном районе страницы, а
Группировка объектов
Группировка объектов При работе часто приходится использовать большое количество объектов и на определенной стадии мы начинаем оперировать не отдельными объектами, а их группами, объединяя по нескольку объектов в один.К примеру, создав колонтитул с использованием
Стили объектов
Стили объектов Для унифицированного оформления объектов в Adobe InDesign мы можем использовать стили объектов. Применение стилей объектов позволяет быстро и одинаково оформлять текстовые фреймы (например, при создании врезок), фреймы с помещенными изображениями (для создания
1.3. Живучесть объектов IPC
1.3. Живучесть объектов IPC Можно определить живучесть (persistence) любого объекта IPC как продолжительность его существования. На рис. 1.2 изображены три возможные группы, к которым могут быть отнесены объекты по живучести. Рис. 1.2. Живучесть объектов IPC1. Объект IPC, живучесть
Использование других методов для генерации первичных ключей
Использование других методов для генерации первичных ключей Вовсе не обязательно, чтобы каждая таблица имела первичный ключ, но в практическом отношении желательно, чтобы было именно так. Важность первичного ключа в таблице трудно переоценить. Как отмечалось в
1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ
1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ Известно, что люди плохо справляются с деталями. Соответственно, любой вид ручного создания программ является источником задержек и ошибок. Чем проще и
1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ
1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ Известно, что люди плохо справляются с деталями. Соответственно, любой вид ручного создания программ является источником задержек и ошибок. Чем проще и
Выбор объектов
Выбор объектов Большинство команд редактирования AutoCAD требует предварительного указания объектов для работы с ними. Выбранные объекты – один или несколько – называются набором. Он может, например, включать в себя все объекты определенного цвета или объекты,
Копирование объектов
Копирование объектов Команда COPY осуществляет копирование объектов. Она вызывается из падающего меню Modify ? Сору или щелчком на пиктограмме Сору на панели инструментов Modify.Запросы команды COPY:Select objects: – выбрать объектыSelect objects: – нажать клавишу Enter для завершения выбора
Перемещение объектов
Перемещение объектов Команда MOVE осуществляет перемещение объектов. Она вызывается из падающего меню Modify ? Move или щелчком на пиктограмме Move на панели инструментов Modify.Запросы команды MOVE:Select objects: – выбрать объектыSelect objects: – нажать клавишу Enter для завершения выбора
Выводы по алгоритмам генерации случайных чисел
Выводы по алгоритмам генерации случайных чисел В предыдущем разделе были рассмотрены несколько достаточно простых генераторов случайных чисел. Наилучшие последовательности чисел позволяют получить два последних генератора, но, к сожалению, они выдвигают жесткие
Выбор способа генерации пары ключей
Выбор способа генерации пары ключей Генерация ключей может осуществляться централизованно (УЦ или по его поручению РЦ) либо индивидуально (конечным субъектом). В большинстве случаев пары ключей создаются конечными субъектами, которые должны иметь программные или