Прежде чем идти и вкладывать средства в инструменты, вы должны попытаться выяснить, что протекает ...
Вы уже подключили perfmon, и это здорово. Я бы отслеживал следующие перфконтеры.
Процесс \ PrivateBytes
обрабатывать \ обрабатывать счет
Процесс \ NonPagedPool
.NET CLR Memory *
Если ваши личные байты растут, а также .NET CLR Memory \ BytesInAllHeaps, это указывает на управляемую утечку. СЛЕДУЮЩИЕ ШАГИ: Сделайте дамп процесса и проанализируйте его с помощью CLR Profiler или, альтернативно, присоедините к процессу windbg.exe, загрузите расширение sos dll и проанализируйте управляемую кучу на наличие утечек.
Если частные байты растут без соответствующего увеличения счетчиков памяти .NET CLR *, то это указывает на неуправляемую утечку. Вам нужно будет присоединить windbg.exe к процессу и использовать расширение! Heap для проверки кучи процесса.
Если вы видите монотонно увеличивающийся HandleCount, а также NonPagedPool, то у вас есть утечка дескриптора - это может быть в управляемом коде или нативном коде. Вам нужно выяснить, какие дескрипторы протекают - вы можете использовать processmon.exe из sysinternals, чтобы получить список дескрипторов, и продолжить расследование.
Надеюсь, это поможет.