Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, fronter3, Вы писали:
F>>Здравствуйте, _Morpheus_, Вы писали:
_M_>>>Здравствуйте, fronter3, Вы писали:
F>>>>Как выяснилось CRL реализована в MSCorWks.dll (~5MB)
F>>>>И насколько я понял, при создании процесса (в результате запуска управляемой сборки), CLR загружается в каждый процесс.
_M_>>>CLR реализована в MSCOREE.DLL. При запуске дотнет приложения под Win выполняется обычный x86 код, который просто передает управление в функцию _CorExeMain из статически прилинкованой MSCOREE.DLL. Таким образом MSCOREE.DLL загружается в каждый дотнет процесс (это относится к Microsoft реализации дотнета). _CorExeMain считывает заголовок EXE файла из которого произведен вызов, находит IL код, компилирует код необходимый для выполнения Main, подставляя на место обращений к другим методам свой хук и передает этому коду управление. Если управление дошло до одного из хуков, то производится компиляция метода к которому произошло обращение и хук заменяется на адрес по которому произведена компиляция этого метода — в следующий раз этот вызов будет произведен сразу, без компиляции.
F>>Рихтер:
F>>F>>The CLR itself isn't implemented in MSCorEE.dll; it is implemented in a file called
F>>MSCorWks.dll.
F>>Так же он утверждает что MSCorEE.dll это некий shim который и грузит нужную CLR:
_M_>суть от этого не меняется, сама mscoree есть, находится она тут: C:\WINDOWS\system32\mscoree.dll
_M_>Что она там грузит для свое работы не столь важно.
F>>Но вопрос быд не в CLR а где находится COM Server? в отдельном процессе или грузится в каждый процесс, тем самым увеличивая его на 5 МБ по умолчанию...
_M_>зависит от типа сервера, для inproc сервера грузится в каждый процесс
и как узнать каким же COM Serverom является COM Server MSCorWks.dll (inproc, outproc) и можно ли поменять эти настройки или это определдяется производителем COM Servera (Microsoft-ерами)