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



Download 6,27 Mb.
Pdf ko'rish
bet438/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   434   435   436   437   438   439   440   441   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.21 .Автоматическое.управление.памятью.(уборка.мусора)
вызывая соответствующие методы финализации. Особенности работы данного 
потока запрещают исполнять в методе финализации любой код, имеющий какие-
либо допущения о потоке, исполняющем код. Например, в методе финализации 
следует избегать обращения к локальной памяти потока.
Очередь на финализацию
Список финализации
Управляемая куча
A
C
D
E
F
I
J
E
J
I
C
F
Корни:
поля и переменные
рис. 21.14.
.Управляемая.куча.с.указателями,.перемещенными.из.списка.
финализации.в.очередь.на.финализацию
Возможно, в будущем, CLR будет поддерживать множественные потоки фина-
лизации, поэтому следует избегать создания кода, в котором методы финализации 
вызываются последовательно. При наличии всего лишь одного потока финали-
зации могут возникнуть проблемы производительности и масштабируемости 
в ситуации, когда финализируемые объекты распределяются между несколькими 
процессорами, но лишь один поток исполняет методы финализации — он может 
просто не успеть.
Взаимодействие списка финализации и очереди на финализацию само по себе 
замечательно, но сначала я расскажу, почему эта очередь получила свое оригинальное 
название. Очевидно, буква «f» означает «finalization», то есть «финализация»: каждая 
запись в очереди — это ссылка на объект в управляемой куче, для которого должен 
быть вызван метод финализации. Вторая часть оригинального имени, «reachable», 
означает, что эти объекты доступны. То есть ее можно было бы назвать очередью 
ссылок на объекты, доступные для финализации, но для краткости мы будем назы-
вать ее очередью на финализацию. Эту очередь можно рассматривать и просто как 
корень, подобно статическим полям, которые являются корнями. Таким образом, 
находящийся в очереди на финализацию объект доступен и 
не
является мусором.
Короче говоря, если объект недоступен, уборщик считает его мусором. Далее, 
когда уборщик перемещает ссылку на объект из списка финализации в очередь на 
финализацию, объект перестает считаться мусором, а это означает, что занятую 
им память освобождать нельзя. На этом этапе уборщик завершает поиск мусора, 
и некоторые объекты, идентифицированные как мусор, перестают считаться тако-
вым — они как бы 
воскресают
.


597
Мониторинг.и.контроль.времени.жизни.объектов
По мере маркировки объектов из очереди другие объекты, на которые ссылаются 
их поля ссылочного типа, также рекурсивно помечаются — все эти объекты должны 
пережить уборку мусора. На этой стадии уборщик мусора завершил выявление 
мусора, а некоторые объекты, отнесенные к мусору, были воскрешены. Уборщик 
мусора сжимает освобожденную память, воскрешенные объекты переводятся 
в более старое поколение, а особый поток CLR очищает очередь на финализацию, 
выполняя метод финализации для каждого объекта из очереди.
Вызванный снова, уборщик обнаруживает, что финализированные объекты стали 
мусором, так как ни корни приложения, ни очередь на финализацию больше на них 
не указывают. Память, занятая этими объектами, попросту освобождается. Важно 
понять, что для освобождения памяти, занятой объектами, требующими финализа-
ции, уборку мусора нужно выполнить дважды. На самом деле может понадобиться 
и больше операций уборки мусора, поскольку объекты переходят в следующее по-
коление (но об этом — чуть позже). На рис. 21.15 показан вид управляемой кучи 
после второй уборки мусора.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   434   435   436   437   438   439   440   441   ...   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