Вопрос по dynamic-loading, c#, .net, appdomain – Максимальное количество доменов приложений, загруженных в одном процессе

5

Поскольку для динамической загрузки сборки требуется загрузка домена приложения, чтобы разрешить уничтожение сборки с помощью выгрузки домена приложения, существует ли в процессе загрузки «максимальное» количество доменов приложений? Я имею в виду серверное приложение, в котором каждый пользователь может динамически запускать свой собственный код C #. Но что, если, скажем, 2000 пользователей войдут в систему и загрузят свои коды? Есть ли какие-то возможные ограничения, с которыми я мог бы столкнуться, кроме числа аппдомианцев?

Благодарю.

Ваш Ответ

3   ответа
5

что в CLR заложено определенное максимальное значение. Скорее всего, объем оставшейся памяти определяет, можно ли динамически загружать новый домен приложения.

Я проведу небольшое исследование, но я не думаю, что для этого есть значение.

РЕДАКТИРОВАТЬ:

Вот еще один пост, который может помочь прояснить ситуацию.

1

x86 не может использовать более 4 ГБ памяти для процесса [только 2 ГБ в режиме пользователя]. Если вы переходите на x64, у вас гораздо больший лимит. Из того, что я знаю, нет такого ограничения на количество доменов приложений, которые вы можете создать.

5

инственное исключение, о котором я знаю, - это число членов класса, ограниченное 65536. Это основано на определении значения токена. Ничего подобного для доменов приложений.

@bin - странно Я приму ваше слово за это, спасибо Джейсон. Hans Passant
<Не может быть, чтобы один страничный запрос убил все другие одновременно выполняемые бомбы.> ASP.NET имеет большой старый try / catch высоко в стеке. Воронки вHttpApplication.Error событие. Если обработчик отсутствует, отображается страница ошибки 500 по умолчанию. Если случится что-то действительно плохое, ASP.NET перезапустит домен, или весь рабочий процесс может перезапуститься, но большинство необработанных исключений не вызывают эти вещи. Jason Kresowaty
@bin - изоляция неисправностей является ключевым моментом. Как только поток умирает от необработанного исключения, объявление становится ненужным. Не может бытьодин Страница запроса, что бомбы убивают всех других одновременно. Рециркуляция тех, кто не умер, возможно, звучит. Я не знаю точных правил. Hans Passant
ASP.NET не создает 1AppDomain по запросу. Это в основном 1 на веб-сайт ASP.NET. ТотAppDomain остается в живых довольно долго, хотя есть условия, которые автоматически "перерабатывают" его. Я не уверен, что делает SQL Server, но новыйAppDomain не создается для каждого запроса. Jason Kresowaty

Похожие вопросы