.NET Framework - накладные расходы на приложение - PullRequest
3 голосов
/ 05 марта 2010

Есть ли у кого-нибудь конкретная информация о накладных расходах при использовании .NET Framework 2.0 / 3.0 / 3.5?

Меня больше всего интересуют накладные расходы на каждый экземпляр и существует ли «фиксированная стоимость» независимо от количества экземпляров, например, в среде служб терминалов с 300 экземплярами приложения .NET Framework работает только один экземпляр компилятора Just-In-Time?

Было бы здорово, если бы я получил алгоритм приближения, например, 10 МБ на экземпляр + 50 МБ для JIT

1 Ответ

2 голосов
/ 05 марта 2010

Работает так же, как неуправляемый код. CLR, JIT-компилятор и сборки .NET Framework - это библиотеки DLL, которые совместно используются любым процессом, выполняющим управляемый код. В ОЗУ загружена только одна копия их кода, все процессы сопоставляют свои страницы виртуальной памяти с этой одной копией.

Управляемый код, как правило, имеет больше закрытых байтов, чем неуправляемый код, который нельзя разделить. Это в первую очередь благодаря JIT-компилятору, он генерирует машинный код на лету по адресам, которые не будут одинаковыми для одного процесса по сравнению с другим. И куча загрузчика и мусора, как правило, немного накачана.

Вы устраняете накладные расходы JIT-компилятора с помощью Ngen.exe. Вот почему .NET Framework сборки являются общими, они были Ngen-ed, когда вы установили Framework на машине. С кучей ничего не поделаешь, но в неуправляемом коде это не сильно отличается.

...