У меня есть веб-сайт ASP.NET FRAMEWORK 4.0 с утечкой памяти. Чтобы найти его, я установил ANTS Memory Profiler.Поиск утечки памяти на веб-сайте ASP.NET с помощью ANTI Memory Profiler?
Это то, что я делаю:
- сайт хоста в IIS7
- Start Муравьи Memory Profiler 8.1
- Установите мы профилирование веб-сайт IIS и указать URL этой страницы (построен в выпуске)
- тест Start и пусть запуска веб-страницы (много кэширование так около 1 мин)
- снимок памяти при первой загрузке страницы и стабильной
- Обновить первая страница МНОГО и увидеть памяти поднимают от 110 МБ (Байт/Working Set -Частное) до 270 MB
- Посещение много страниц на веб-страницу и увидеть его поднять до 360 MB
- Push It некоторые все больше и больше не поднимают делается
- Возьмите памяти снимок и нажмите Class список (проверить классы с источником)
Это покажет классы, которые до сих пор хранятся, например
sites_mypage_default_asx - 10 320 bytes and 10 live instances
usercontrols_common_pagehead_ascx - 928 bytes and 4 live instances
и так далее
Я верю/надеюсь, что эти классы, которые будут очищены с помощью GC
Но это не там, где большой отпечаток стопы, я должен отмените классы с источником, чтобы получить действительно большой один. Например (отсортировано по потоковому размеру (байты)
string - 1 890 292 bytes
RuntimeMethodInfo - 990 976 bytes
RuntimePropertyInfo - 604 136 bytes
Hastable+bucket[] - 413 712 bytes
и так далее.
Проблемы заключается в том, что существует не так много я могу делать это, при открытии Instance отношения графа я буду видеть только систему. классов и нет никакой информации о том, где Тэй являются держать в моем веб-сайте.
Когда классы с источником проверялась, однако я нашел большую утечку памяти, которая может быть фиксированной (это было до выше пробега).
Но я не знаю, как сделать следующий шаг? Почему мой сайт по-прежнему занимает 350 МБ? 350 МБ с данными - это много данных, и я не вижу, чтобы я кэшировал эти данные !?
Какой должен быть следующий шаг?
Вы много работаете с строкой? 350mb ничего не btw .. я бы не был слишком обеспокоен, пока он не взлетел выше этого. –
Большая часть больших строк содержит html-код, и thay не должен быть действительно в памяти, но я полагаю, что это какая-то проблема GC. 350 МБ звучит много с помощью только данных, но вы, вероятно, правы, вопрос в этом случае заключается в том, почему у хоста есть ограничение на 400 МБ. – Banshee