Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






Сборка мусора в .NET - поколения объектов



...Перед тем, как мы разберем варианты по ручному управлению GC, давайте пока ознакомимся с общей структурой алгоритма подчистки памяти сборщиком мусора.

Мы уже знаем, что сборка мусора представляет собой непрерывный процесс слежения за состоянием памяти. Однако, активную фазу принимает в основном в момент острого недостатка памяти для продолжения работы приложения. Кроме того, следует помнить, что сборщик мусора всегда запускается в отдельном потоке и в момент активной работы его, все остальные потоки приложения приостанавливаются.

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


Рисунок 1. Поколения объектов

В .NET эти группы называются поколениями. Всего существует 3 поколения:

  • Поколение 0. Новый созданный объект, который еще никогда не помечался как кандидат на удаление;
  • Поколение 1. Объект, который уже однажды пережил сборку мусора. Сюда обычно попадают объекты, которые были помечены для удаления, но все-таки не удалены из-за того, что места в памяти (куче) было предостаточно;
  • Поколение 2. Объекты, которые пережили более одной очистки памяти сборщиком мусора.
Очевидно, что чем выше поколение объекта, то тем дольше он находится в памяти. Более того, вероятность дальнейшего его существования в куче больше, чем у объекта более низкого поколения.

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

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

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



Больше информации читайте по теме:



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок