2008-08-29 10 views
5

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

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

Любые идеи?

ответ

3

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

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

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

0

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

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

9
  • подключить отладчик

CDB -p

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

.loadby Сос mscorwks

  • дамп кучи в форматировать CLRProfiler понимает

! TraverseHeap heap.txt

  • открепление отладчик

QD

  • нагрузки heap.txt в приложении clrprofiler
1

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