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


рис. 21.15. .Состояние.управляемой.кучи.после.второй.уборки.мусора Мониторинг и контроль времени



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

рис. 21.15.
.Состояние.управляемой.кучи.после.второй.уборки.мусора
Мониторинг и контроль времени 
жизни объектов
Для каждого домена приложения CLR поддерживает 
таблицу GC-дескрипторов
(
GC handle table
), с помощью которой приложение отслеживает время жизни объекта 
или позволяет управлять им вручную. В момент создания домена приложения табли-
ца пуста. Каждый элемент таблицы состоит из указателя на объект в управляемой 
куче и флага, задающего способ мониторинга или контроля объекта. Приложение 
добавляет в таблицу и удаляет из таблицы элементы с помощью показанного далее 
типа 
System.Runtime.InteropServices.GCHandle



598
Глава.21 .Автоматическое.управление.памятью.(уборка.мусора)
// Тип определяется в пространстве имен System.Runtime.InteropServices
public struct GCHandle {
// Статические методы, создающие элементы таблицы
public static GCHandle Alloc(object value);
public static GCHandle Alloc(object value, GCHandleType type);
// Статические методы, преобразующие GCHandle в IntPtr
public static explicit operator IntPtr(GCHandle value);
public static IntPtr ToIntPtr(GCHandle value);
// Статические методы, преобразующие IntPtr в GCHandle
public static explicit operator GCHandle(IntPtr value);
public static GCHandle FromIntPtr(IntPtr value);
// Статические методы, сравнивающие два типа GCHandles
public static Boolean operator ==(GCHandle a, GCHandle b);
public static Boolean operator !=(GCHandle a, GCHandle b);
// Экземплярный метод, освобождающий элемент таблицы (индекс равен 0)
public void Free();
// Экземплярное свойство, извлекающее/назначающее 
// для элемента ссылку на объект 
public object Target { get; set; }
// Экземплярное свойство, равное true при отличном от 0 индексе
public Boolean IsAllocated { get; }
// Для элементов с флагом pinned возвращается адрес объекта
public IntPtr AddrOfPinnedObject();
public override Int32 GetHashCode();
public override Boolean Equals(object o);
}
В сущности, для контроля или мониторинга времени жизни объекта вызывается 
статический метод 
Alloc
объекта 
GCHandle
, передающий ссылку на этот объект, и тип 
GCHandleType
, который представляет собой флаг, задающий способ мониторинга/
контроля объекта. Перечислимый тип 
GCHandleType
определяется так:
public enum GCHandleType {
Weak = 0, // Мониторинг существования объекта
WeakTrackResurrection = 1 // Мониторинг существования объекта
Normal = 2, // Управление временем жизни объекта
Pinned = 3 // Управление временем жизни объекта
}
Вот что означают эти флаги.
‰
Weak
— мониторинг времени жизни объекта. Флаг позволяет узнать, когда 
уборщик мусора обнаруживает, что объект более недоступен коду приложения. 
Учтите, что метод финализации объекта мог как выполниться, так и не выпол-
ниться, поэтому объект может по-прежнему оставаться в памяти.



Download 6,27 Mb.

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