CLR Profiler — присоединение к существующему процессу

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

Однако CLR Profiler позволяет мне только ЗАПУСТИТЬ приложение, а не подключаться к существующему. Я предполагаю, что это связано с тем, что он также отслеживает распределения и сборщик мусора, но меня это не очень интересует. Мне просто нужно что-то, что делает снимок текущего состояния кучи и показывает мне, что там есть, сколько объектов каждого типа и сколько всего байтов используется каждым типом объекта.

Любые идеи?


person Daniel Magliola    schedule 29.08.2008    source источник


Ответы (2)


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

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

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

person jfs    schedule 29.08.2008

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

cdb -p

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

.loadby sos mscorwks

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

!TraverseHeap куча.txt

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

qd

  • загрузить heap.txt в приложение clrprofiler
person Peli    schedule 28.09.2008