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


Домены.приложений ПриМеЧание



Download 6,27 Mb.
Pdf ko'rish
bet455/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   451   452   453   454   455   456   457   458   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

621
Домены.приложений
ПриМеЧание
Чтобы.продемонстрировать,.сколь.значительной.может.быть.потеря.производитель-
ности,.я.написал.следующий.код:
private sealed class NonMBRO : Object { public Int32 x; } 
private sealed class MBRO : MarshalByRefObject { public Int32 x; } 
private static void FieldAccessTiming(){ 
const Int32 count = 100000000; 
NonMBRO nonMbro = new NonMBRO(); 
MBRO mbro = new MBRO(); 
Stopwatch sw = Stopwatch.StartNew(); 
for (Int32 c = 0; c < count; c++) nonMbro.x++; 
Console.WriteLine("{0}", sw.Elapsed); // 00:00:00.4073560 
sw = Stopwatch.StartNew(); 
for (Int32 c = 0; c < count; c++) mbro.x++; 
Console.WriteLine("{0}", sw.Elapsed); // 00:00:02.5388665 
}
Доступ.к.экземплярному.полю.класса.NonMBRO,.производного.от.класса.Object,.
занял.около.0,4.секунды,.в.то.время.как.для.доступа.к.классу.MBRO,.производному.
от.MarshalByRefObject,.потребовалось.2,54.секунды .Как.видите,.во.втором.случае.
процесс.занял.в.6.раз.больше.времени!
Наконец, с точки зрения удобства использования в производном от 
MarshalByRefObject
типе не следует определять какие-либо статические члены. 
Дело в том, что к статическим членам всегда обращаются в контексте вызывающего 
домена приложений. Никакой передачи между доменами быть не может, поскольку 
информация о целевом домене содержится в объекте-представителе, но такой объект 
при вызове статического члена попросту отсутствует. Модель программирования, 
предусматривающая выполнение статических членов типа в одном домене, в то вре-
мя как экземплярные члены выполняются в другом, была бы очень неудачной.
Так как во втором домене отсутствуют корни, исходный объект, на который 
ссылался представитель, может быть отправлен в мусор. Разумеется, это — не 
идеальный подход. Однако если бесконечно хранить исходный объект в памяти, 
он останется там даже после удаления представителя, что тоже не очень хорошо. 
В CLR эта проблема решается при помощи 
диспетчера аренды
(lease manager). 
Создав для объекта представитель, CLR сохраняет объект в течение 5 минут. Если 
за это время через представитель не последовало ни одного вызова, объект 
деакти-
вируется
(deactivated) и освобождает память при следующей уборке мусора. После 
каждого вызова объекта диспетчер обновляет его срок аренды, в результате объект 
гарантированно остается в памяти еще 2 минуты и только потом деактивируется. 
При попытке вызвать через представитель объект с истекшим сроком аренды CLR 
генерирует исключение 
System.Runtime.Remoting.RemotingException
.


622
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   451   452   453   454   455   456   457   458   ...   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