Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet408/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   404   405   406   407   408   409   410   411   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ВниМание
Это.весьма.упрощенное.описание.работы.уборщика.мусора .В.действительности.
уборка.мусора.выполняется.при.заполнении.поколения.0 .Подробнее.о.поколениях.
мы.поговорим.чуть.позже,.а.пока.для.простоты.будем.считать,.что.уборка.мусора.
происходит.при.заполнении.кучи 
Для управления сроком жизни объектов в некоторых системах используется 
алгоритм подсчета ссылок. Например, он используется в модели Microsoft COM 
(Component Object Model). В системах с подсчетом ссылок каждый объект в куче 
содержит внутреннее поле с информацией о том, сколько «частей» программы в на-
стоящее время используют данный объект. Когда каждая «часть» переходит к точке 
кода, в которой объект становится недоступным, она уменьшает поле счетчика 
объекта. Когда значение счетчика уменьшается до 0, объект удаляется из памяти. 
К сожалению, в системах с подсчетом ссылок возникают серьезные проблемы 
с циклическими ссылками. Например, в графическом приложении окно содержит 
ссылку на дочерний элемент пользовательского интерфейса, а дочерний элемент 
пользовательского интерфейса содержит ссылку на свое родительское окно. Эти 
ссылки не позволяют счетчикам двух объектов уменьшиться до 0, поэтому оба объ-
екта остаются в памяти даже тогда, когда окно перестало быть нужным приложению.
Из-за проблем с алгоритмами, основанными на подсчете ссылок, CLR вместо 
этого использует алгоритм 
отслеживания ссылок
. Алгоритм отслеживания ссылок 
работает только с переменными ссылочного типа, потому что только эти переменные 
могут ссылаться на объекты в куче; переменные значимых типов просто содержат 
данные экземпляра значимого типа. Ссылочные переменные могут использовать-
ся во многих контекстах: статические и экземплярные поля классов, аргументы 
методов, локальные переменные. Все переменные ссылочных типов называются 
корнями
(roots).
Когда среда CLR запускает уборку мусора, она сначала приостанавливает все 
программные потоки в процессе. Тем самым предотвращается обращение к объектам 
и возможное изменение состояния во время их анализа CLR. Затем CLR перехо-
дит к этапу уборки мусора, называемому 
маркировкой
(marking). CLR перебирает 
все объекты в куче, задавая биту в поле индекса блока синхронизации значение 0. 
Это означает, что все эти объекты могут быть удалены. Затем CLR проверяет все 
активные корни и объекты, на которые они ссылаются. Если корень содержит 
null

CLR игнорирует его и переходит к следующему корню.
Если корень ссылается на объект, в поле индекса блока синхронизации устанав-
ливается бит — это и есть признак маркировки объекта. После маркировки объекта 


558
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   404   405   406   407   408   409   410   411   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish