Очень высокое использование памяти в .NET 4.0

У меня есть служба 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 не имеет ничего общего с проблемой.

Идеи?

63
задан RMD 2 June 2011 в 23:43
поделиться