Обновление Я проследил проблему утечки памяти до следующего: произошла утечка памяти, когда программа работала в качестве службы Windows, но не при работе в качестве консольного приложения.
Используя ANTS Memory Profiler, я увидел, что утечка памяти удерживалась корнем GC очереди финализатора.Поэтому возникает вопрос: почему объекты застряли в очереди финализатора, когда программа запускалась как служба Windows?
Исходный вопрос
Я занимаюсь разработкой службы Windows вC #.Периодически собирает данные с сетевых устройств.Целевая среда - 4.6.
Я использую TPL ActionBlock для параллельной отправки запроса.
Моя проблема: Если я запускаю приложение как обычное консольное приложение, использование памяти остается нормальным.(100 МБ) В отладчике видно, что сборщик мусора запускается регулярно.
Когда приложение запускается в сеансе 0 в качестве службы Windows, использование памяти возрастает до нехватки памяти.(6 ГБ) Присоединение отладчика Visual Studio к службе Windows - это показывает, что сборщик мусора происходит иногда, но не так часто, как в обычной консоли.
Интересно: это происходит на Win10.На одной виртуальной машине Win7 - эта проблема с памятью присутствует в службе и запускается как консольное приложение.
Большое спасибо за помощь!