споделяне на памет между домейни на приложения

За всеки процес се отделя отделна памет. В .net процесът може да съдържа множество домейни на приложения. Как се разпределя паметта за всеки домейн на приложение? Споделят ли обща памет за процеса?


person Raghav55    schedule 28.11.2011    source източник


Отговори (1)


Не, не им е разрешен достъп до същата памет и споделяне на обекти в това пространство на паметта, обектите трябва да бъдат маршалирани, когато ги предавате от един домейн на приложение към друг:

домейни на приложения

Кодът, работещ в едно приложение, не може да има директен достъп до код или ресурси от друго приложение. Средата за изпълнение на общ език налага тази изолация, като предотвратява директни извиквания между обекти в различни домейни на приложения. Обектите, които преминават между домейни, се копират или се осъществява достъп чрез прокси. Ако обектът е копиран, извикването към обекта е локално. Това означава, че и повикващият, и обектът, към който се отнася, са в един и същ домейн на приложение. Ако обектът е достъпен чрез прокси, извикването към обекта е отдалечено. В този случай повикващият и посоченият обект са в различни домейни на приложение. Междудомейнните повиквания използват същата инфраструктура за отдалечени повиквания като повикванията между два процеса или между две машини. По този начин метаданните за обекта, който се препраща, трябва да са достъпни и за двата домейна на приложението, за да позволи извикването на метода до да бъде JIT компилиран правилно. Ако извикващият домейн няма достъп до метаданните за обекта, който се извиква, компилацията може да се провали с изключение от тип System.IO.FileNotFound

person Davide Piras    schedule 28.11.2011
comment
на 32-битова машина, ако наличната RAM е 4 GB, CLR разпределя 1,5 GB до 2 GB за приложение. И така, как се споделя тази памет. Всеки домейн на приложение ще получи ли 2 GB? - person Raghav55; 28.11.2011