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