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



Download 6,27 Mb.
Pdf ko'rish
bet424/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   420   421   422   423   424   425   426   427   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.21 .Автоматическое.управление.памятью.(уборка.мусора)
для домена приложений, так и для всего процесса, проверить корни, сохраняющие 
объект в куче живым, и многое другое.
Освобождение ресурсов при помощи 
механизма финализации
Итак, мы познакомились с азами уборки мусора и управляемой кучей, а также тем, 
как уборщик мусора освобождает память объекта. К счастью, большинству типов 
для работы требуется только память, но есть и типы, которым помимо памяти не-
обходимы системные ресурсы.
Например, типу 
System.IO.FileStream
нужно открыть файл (системный ре-
сурс) и сохранить его дескриптор. Затем при помощи этого дескриптора методы 
Read
и 
Write
данного типа работают с файлом. Аналогично, тип 
System.Threading.
Mutex
открывает мьютекс, являющийся объектом ядра Windows (системный ресурс), 
и сохраняет его дескриптор, который использует при вызове методов объекта 
Mutex
.
Если тип, использующий системный ресурс, будет уничтожен в ходе уборки му-
сора, занимаемая объектом память вернется в управляемую кучу; однако системный 
ресурс, о котором уборщику мусора ничего не известно, будет потерян. Разумеется, 
это нежелательно, поэтому CLR поддерживает механизм 
финализации
(finalization), 
позволяющий объекту выполнить корректную очистку, прежде чем уборщик мусора 
освободит занятую им память. Любой тип, использующий системный ресурс (файл, 
сетевое соединение, сокет, мьютекс и т. д.), должен поддерживать финализацию. 
Когда CLR определяет, что объект стал недоступным, ему предоставляется возмож-
ность выполнить финализацию с освобождением всех задействованных системных 
ресурсов, после чего объект будет возвращен в управляемую кучу.
Всеобщий базовый класс 
System.Object
определяет защищенный виртуальный 
метод с именем 
Finalize
. Когда уборщик мусора определяет, что объект подлежит 
уничтожению, он вызывает метод 
Finalize
этого объекта (если он переопределен). 
Группа проектировщиков C# из Microsoft посчитала, что метод финализации отли-
чается от остальных и требует специального синтаксиса в языке программирования 
(по аналогии с тем, как в С# специальный синтаксис используется для определения 
конструктора). Поэтому для определения метода финализации в С# перед именем 
класса нужно добавить знак тильды (
~
):
internal sealed class SomeType {
// Метод финализации
~SomeType() {
// Код метода финализации
}
}
Скомпилировав этот код и проверив полученную сборку с помощью утилиты 
ILDasm exe
, вы увидите, что компилятор С# внес в метаданные этого модуля защи-


577
Освобождение.ресурсов.при.помощи.механизма.финализации
щенный метод с именем 
Finalize
. При изучении IL-кода метода 
Finalize
также 
становится ясно, что код в теле метода генерируется в блок 
try
, а вызов метода 
base.Finalize
— в блок 
finally
.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   420   421   422   423   424   425   426   427   ...   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