Если у вас есть утечка памяти, вы можете использовать расширение отладки SOS , чтобы попытаться ее найти. Эта статья также является очень хорошим примером и немного более полным, чем то, что будет в моем ответе.
Вы можете использовать это либо в VS, либо в WinDbg, и единственная разница в том, как вы загружаете dll. Для Visual Studio сначала включите неуправляемую отладку на вкладке отладки свойств вашего проекта. Когда придет время его загрузить, используйте .load SOS.dll
в Immediate Window
. Для WinDbg либо откройте исполняемый файл, либо присоедините его к процессу, и, чтобы загрузить его, используйте .loadby sos clr
для .NET 4 или .loadby sos mscorwks
для 2 или 3.5.
После того, как приложение некоторое время запускается, приостановите его (прервите все). Теперь вы можете загрузить SOS. В случае успеха введите !dumpheap -stat
. Это перечислит, сколько памяти использует каждый класс. Если этого недостаточно, чтобы найти утечку, другая статья, на которую я ссылаюсь, более подробно расскажет, как найти утечку памяти.