Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Поколения объектов

Void main () | Составляющие процесса обработки исключений в .NET | Генерация общего исключения | Перехват исключений | Создание специальных исключений, способ первый | Обработка нескольких исключений. | Блок finally | Время жизни объектов | Базовые сведения о времени жизни объектов | CIL-код, генерируемый для ключевого слова new |


Читайте также:
  1. II. Структура и состав кадастровых сведений Реестра объектов недвижимости
  2. Анализ величины светорассеивания как метод изучения биологических объектов
  3. Базовые сведения о времени жизни объектов
  4. В направлении увеличения размеров бесполого поколения (2n) и редукции полового поколения (n).
  5. ВЗАИМОЗАВИСИМОСТЬ - ПРОБЛЕМА НЕ ОДНОГО ПОКОЛЕНИЯ
  6. Время жизни объектов
  7. Выбор и описание объектов-аналогов

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

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

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

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

Ø Поколение 2. Идентифицирует объект, которому удалось пережить более одного прогона сборщика мусора.

 

На заметку! Поколения 0 и 1 называются эфемерными (недолговечными).

Сборщик мусора сначала анализирует все объекты, которые относятся к поколению 0. Если после их удаления остается достаточное количество памяти, статус всех остальных (уцелевших) объектов повышается до поколения 1. Чтобы увидеть, как поколение, к которому относится объект, влияет на процесс сборки мусора, обратите внимание на рис. 5, где схематически показано, как набору уцелевших объектов поколения О (А, В и Е) назначается статус объектов следующего поколения после освобождения требуемого объема памяти.

Если все объекты поколения 0 уже были проверены, но все равно требуется дополнительное пространство, проверяться на предмет достижимости и подвергаться процессу сборки мусора начинают объекты поколения 1. Объектам поколения 1, которым удалось уцелеть после этого процесса, затем назначается статус объектов поколения 2. Если же сборщику мусора все равно требуется дополнительная память, тогда на предмет достижимости начинают проверяться и объекты поколения 2. Объектам, которым удается пережить сборку мусора на этом этапе, оставляется статус объектов поколения 2, поскольку более высокие поколения просто не поддерживаются. Из всего вышесказанного важно сделать следующий вывод: из-за отнесения объектов в куче к определенному поколению, более новые объекты (вроде локальных переменных) будут удаляться быстрее, а более старые (такие как объекты приложений) — реже.

 


Дата добавления: 2015-07-25; просмотров: 75 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Роль корневых элементов приложения| Фоновая сборка мусора в версии .NET 4.0

mybiblioteka.su - 2015-2024 год. (0.006 сек.)