разделение памяти между доменами приложений - PullRequest
3 голосов
/ 28 ноября 2011

Для каждого процесса выделяется отдельная память.В .net процесс может содержать несколько доменов приложений.Как распределяется память для каждого домена приложения?Они разделяют общую память процесса?

1 Ответ

1 голос
/ 28 ноября 2011

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

Домены приложений

Код, запущенный в одном приложении, не может напрямую получить доступ к коду или ресурсы из другого приложения. Общеязыковая среда выполнения обеспечивает эту изоляцию, предотвращая прямые вызовы между объектами в разные домены приложений. Объекты, которые проходят между доменами либо скопированы или доступны по доверенности. Если объект скопирован, вызов на объект является локальным. То есть и вызывающая сторона, и объект, являющийся ссылки находятся в том же домене приложения. Если объект доступ через прокси, вызов объекта является удаленным. В этом В этом случае вызывающая сторона и объект, на который ссылаются домены приложений. В междоменных вызовах используется один и тот же удаленный вызов. инфраструктура как вызовы между двумя процессами или между двумя машинами. Таким образом, метаданные для объекта, на который ссылаются, должны быть доступны для обоих доменов приложений, чтобы позволить вызову метода JIT-компилируется правильно. Если у вызывающего домена нет доступа к метаданные для вызываемого объекта, компиляция может произойти сбой за исключением типа System.IO.FileNotFound

...