Сборщик мусора .NET освобождает память, удерживаемую объектами, которые больше не «достижимы». Чтобы выяснить, какие объекты являются «достижимыми» (и, следовательно, еще не пригодными для сбора мусора), GC приостанавливает все потоки, начинает с набора «корневых» объектов и пытается пройти полный график. Каждый объект, который не помечен как достижимый, становится кандидатом на сборку мусора. Не имеет значения, какой поток был активным, когда память была первоначально выделена; все, что имеет значение, - то, что ваш объект больше не доступен во время первой фазы сборки мусора. «Корни» включают все локальные переменные и параметры метода (это переменные в стеке для каждого из потоков вашей службы) и статические переменные.
Microsoft имеет бесплатную загрузку под названием Средства отладки для Windows, которая включает в себя windbg.exe. Этот инструмент можно использовать для создания дампа памяти (приватной) вашего процесса. Вы можете вызвать его так: windbg.exe -p <processID>
Инструмент (с помощью расширения SOS) позволяет самостоятельно перемещаться по достижимым объектам. Если ваша проблема заключается в избытке доступных управляемых объектов, инструмент должен помочь.