Вот как я могу найти утечку памяти:
1) Загрузите WinDbg , если у вас ее еще нет.Это действительно мощный (хотя и сложный в использовании) отладчик.
2) Запустите WinDbg и присоедините его к своему процессу, нажав F6 и выбрав свой exe.
3)присоединенный введите эти команды: (сопровождаемый вводом)
// это загрузит управляемые расширения
.loadby sos clr
// это выведет детали всех ваших объектовв куче
!dumpheap -stat
// это снова запустит службу
g
Теперь подождите несколько минут и нажмите Ctrl +Перерыв, чтобы сломать обратно в сервис.Снова введите команду !Dumpheap -stat
, чтобы узнать, что сейчас находится в куче.Если у вас есть утечка памяти (в управляемом коде), то вы увидите, что один или несколько ваших классов со временем будут добавляться в кучу.Теперь вы знаете, что хранится в памяти, чтобы вы знали, где искать проблему в вашем коде.Вы можете определить, что содержит ссылки на объекты, просочившиеся из WinDbg, если хотите, но это сложный процесс.Если вы решите использовать WinDbg, то, возможно, вы захотите начать с чтения блога Тесс и выполнения labs .
.