CLR Profiler - Присоединение к существующему процессу - PullRequest
5 голосов
/ 29 августа 2008

Я хотел бы использовать что-то вроде профилей CLR в .Net 2.0, чтобы увидеть, какие объекты занимают больше места в куче в любой момент времени (рабочего процесса ASP.Net).

Тем не менее, CLR Profiler позволяет мне только запустить приложение, но не присоединять к существующему. Я предполагаю, что это потому, что он отслеживает распределение и GC тоже, но я не очень заинтересован в этом. Я просто хотел бы получить что-то, что делает снимок текущего состояния кучи и показывает мне, что там есть и сколько объектов каждого вида существует, и сколько байтов используется каждым типом объекта.

Есть идеи?

Ответы [ 4 ]

9 голосов
/ 28 сентября 2008
  • Присоединить отладчик

cdb -p

  • загрузка расширений отладчика .net

.loadby sos mscorwks

  • сбросить кучу в формате, понятном CLRProfiler

! TraverseHeap heap.txt

  • Отладочный отладчик

QD

  • загрузить heap.txt в приложение clrprofiler
3 голосов
/ 29 августа 2008

.Net Memory Profiler - это именно то, что вам нужно. Это не бесплатно, но есть пробная версия. На самом деле я использовал пробную версию, чтобы найти утечки в нашем последнем проекте. Одна заметная особенность:

Легко определить утечки памяти по собирать и сравнивать снимки .NET memory

Я думаю, это то, что вы ищете.

1 голос
/ 04 декабря 2009

В этой статье MSDN рассказывается о том, как использовать бесплатный CLR Profiler для сравнения с экземплярами стека. Вы правы, что в настоящее время вы не можете подключить CLR Profiler к работающему процессу (в статье объясняется, почему), но, как ни крути, похоже, что вы сможете это сделать в ближайшее время.

0 голосов
/ 29 августа 2008

Вы смотрели на RedGates .NET Profiler?

Прошло много времени с тех пор, как я его использовал, но я уверен, что вы можете присоединиться к любому процессу CLR в любое время.

...