утечка памяти в mscorwks.dll - PullRequest
       4

утечка памяти в mscorwks.dll

1 голос
/ 02 августа 2010

У нас проблема в одном из наших приложений ASP.net, mscorwks.dll использует много памяти. Кто-нибудь получил какие-нибудь советы о том, с чего начать поиск утечки памяти?

mscorwks! EEVirtualAlloc + 119: 1,26 ГБайт выделенных ресурсов.

Ответы [ 3 ]

0 голосов
/ 02 августа 2010
0 голосов
/ 02 августа 2010

Шаги, чтобы выяснить, какие управляемые типы вызывают утечку, можно суммировать следующим образом:

  1. Запустите WinDbg и присоедините ваш процесс
  2. Загрузите расширение отладчика SOS в WinDbgиспользуя: .loadby sos mscorwks (замените mscorwks на clr, когда ваше приложение работает на v4.0)
  3. Сбросьте статистику использования памяти с помощью !dumpheap -stat
  4. Найдите типы утечек (согласнона их использование памяти и количество экземпляров)
  5. Найдя тип утечки, сбросьте его экземпляры, используя !dumpheap -mt <INSTANCE METHODTABLE> (methodTable может быть получен из выходных данных предыдущей команды)
  6. Выберите случайное числоэкземпляры и посмотрите, почему они не выпущены коллекциями GC (в которых корни gc по-прежнему сохраняют ссылку на них), используя !gcroot <INSTANCE ADDRESS>

На данный момент у вас должно быть достаточно данных, чтобы найти источник вашегоутечка.

Более подробную статью об этих шагах можно найти здесь .

0 голосов
/ 02 августа 2010

Используйте .NET-профилировщик, например

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...