При запуске приложения .NET 2.0 WinForms в среде служб терминалов я вижу некоторые неожиданные результаты, которые я не могу объяснить. Все, что я прочитал, указывает на то, что сборки с JIT (то есть без использования NGen для создания собственных образов) приводят к тому, что все пространство кода хранится на частных страницах, увеличивая размер рабочего набора / нагрузку на память. Однако фактические результаты (проверенные с помощью Process Explorer, VMMap и WinDbg) показывают, что даже JIT-сборки действительно размещаются на общих страницах (и действительно являются общими, когда выполняется несколько экземпляров приложения, даже в отдельных TS сеансы / пользователи).
Кто-нибудь может объяснить, почему это может быть? Это работает в среде сервера W2K8, поэтому ASLR объясняет, почему отсутствие конкретных базовых адресов для каждой сборки и результирующая перестановка не вызывают проблем. Тем не менее кажется, что тот факт, что это не собственные образы PE, должен привести к тому, что код этих сборок будет храниться на частных страницах.
Это было обнаружено, когда мы начали исследовать использование NGen для уменьшения нагрузки на память, но на самом деле обнаружили, что это увеличивает размер рабочего набора, поскольку сборки, созданные с помощью JIT, уже используются совместно.
Здесь я нашел самую последнюю ссылку, которая опять же отличается от наших фактических результатов:
Изменить: я должен добавить, что с тех пор, как впервые был задан вопрос, больше экспериментов с тестовыми окнами Windows Server 2003 также, по-видимому, показывают, что JIT-сборки могут использоваться совместно между процессами. Я все еще не понимаю, почему все советы, которые я могу найти, указывают на то, что требуется NGen, но все реальные доказательства противоречат этому. Я очень надеюсь, что здешние эксперты прольют свет.
Спасибо!
Изменить: Я стер со всех своих книг по .NET / CLR, и у меня заканчиваются идеи по поисковым запросам, чтобы попытаться решить эту проблему; кто сделает мой день лучше, помогая устранить это ужасное нытье чувство «Я не понимаю, что происходит»!?! :)