У меня есть служба Windows С#, которую я недавно перешел с .NET 3.5 на .NET 4.0. Никаких других изменений кода не было.
При запуске на 3.5 использование памяти для данной рабочей нагрузки составляло примерно 1,5 ГБ памяти, а пропускная способность 20 X в секунду. (X не имеет значения в контексте этого вопроса.)
Точная служба, работающая в 4.0, использует от 3 ГБ до 5 ГБ + памяти и получает менее 4 Х в секунду. Фактически, сервис, как правило, заканчивается тем, что использование памяти продолжает расти до тех пор, пока моя система не будет размещаться при использовании на 99%, а обмен файлами страниц будет гаснуть.
Я не уверен, что это связано с сборкой мусора или что-то в этом роде, но мне трудно понять это. В моем оконном сервисе используется GC-сервер "Сервер" через коммутатор конфигурационного файла, показанный ниже:
<runtime>
<gcServer enabled="true"/>
</runtime>
Изменение этого параметра на false, похоже, не изменило ситуацию. Кроме того, из чтения, которое я сделал в новом GC в 4.0, большие изменения влияют только на режим GC рабочей станции, а не на режим GC сервера. Поэтому, возможно, GC не имеет ничего общего с этой проблемой.
Идеи?