2013-08-26 2 views
0

Я использую профилировщик памяти redgate, чтобы найти утечку памяти. но это программное обеспечение показывает только системные классы. Я хочу найти страницу, которая создает проблему, пожалуйста, помогитеНайти страницу, которая утечки памяти в asp.net

+0

Утечки памяти в приложениях на основе GC довольно сложны. Вы действительно переживаете это? Я бы предложил опубликовать сам класс и задать вопрос: «Где утечка памяти?» – Dariusz

+0

Профайлер памяти показывает только имя системного класса, например system.string, system.byte.но я хочу знать, какой класс или aspx.cs-страница преследует проблему. –

+0

Теперь это ужасный профайлер. Правильно ли вы это используете? – Dariusz

ответ

1

При профилировании веб-сайта ASP.NET вы увидите много системных классов, потому что IIS делает много за кулисами, но ANTS Memory Profiler конечно isn ' t ограничивается отображением только системных классов.

Классы, для которых у вас есть исходный код, выделены жирным шрифтом в списке классов, и вы также можете использовать фильтрацию, чтобы отображать только классы, для которых у вас есть источник. Если у вас нет источника, но вы хотите выделить классы из определенного пространства имен (например, в вашем случае что-либо, что отсутствует в системе), вы можете сделать это, выбрав Группа по пространству имен.

The class list showing only classes with source

МУРАВЬЕВ показывает вам объекты, которые удерживаются в памяти в момент, когда снимок памяти берется. Если список классов показывает вам, что ни один из ваших классов не существует в памяти, это потому, что они не в тот момент.

Вы не дали никакой информации, так что трудно дать много указаний в вашем конкретном случае, но в целом:

  • ли вы на самом деле есть проблема памяти? Используйте счетчики производительности на временной шкале ANTS, чтобы посмотреть на использование памяти во время использования вашего приложения. Если он не поднимется, возможно, у вас нет проблемы.

  • Убедитесь, что вы делаете снимки в нужное время. Это одна из самых трудных вещей, которые нужно сделать правильно. Во-первых, вам нужно убедиться, что сайт был правильно «разогрет». Если вы посмотрите на поведение первых постраничных страниц на сайте, вы не будете смотреть на нормальное поведение приложения из-за таких вещей, как одноразовые накладные расходы на настройку соединений, кеши, которые не используются, и т. Д. После того, как сайт нагревается , сделайте базовый снимок. Затем используйте приложение так, как вы ожидаете, может вызвать проблему, а затем сделать другой снимок. ANTS сравнивает использование памяти между двумя моментальными снимками и, в частности, показывает, какие классы используют больше памяти между моментальными снимками. Затем повторите свои действия (используйте свой сайт таким же образом, а затем сделайте еще один снимок) и найдите аналогичные увеличения.

  • Узнайте, почему происходит увеличение. Как только вы определили что-то, что кажется проблемой, используйте граф хранения экземпляра, чтобы понять цепи ссылок, которые заставляют этот объект храниться в памяти.

Известной проблемой диагностики утечки памяти ASP.NET, когда утечка только очень небольшой объем памяти, но делать это очень часто, например, при каждой загрузке страницы. Сайт может выглядеть отлично в среде dev, но затем не работает при загрузке. Полезным стартовым подходом может быть использование инструмента генерации нагрузки (вы можете начать с чего-то вроде бесплатного инструмента tinyget, который поставляется с IIS6, или использовать более сложные тесты нагрузки, если они у вас есть), и профилировать производительность приложения в этих условиях , Профилирование в производстве является рискованной мерой и должно быть сделано только в качестве крайней последней меры.

+0

Я, кстати, работаю над командой профилировщика памяти. –

Смежные вопросы