2012-06-17 2 views
0

У меня проблема с утечкой памяти в очень большом приложении ASP.NET. Примерно через 24 часа использования (иногда намного больше) исключается исключение OutOfMemory. Поэтому я пытаюсь понять, как управляемая память работает в .NET. Когда приложение ASP.NET выдает исключение OutOfMemory? Сервер имеет много оперативной памяти, и всегда остается много памяти, когда вызывается исключение OutOfMemory. Я понимаю разницу между виртуальной памятью и физической памятью. Сколько памяти должен обрабатывать W3WP-процесс до того, как будет выбрано исключение OutOfMemory? Есть ли где-нибудь настройка? в файле Machine.Config? Процесс ASP.NET никогда не перерабатывается.Утечка памяти ASP.NET

+0

Ваш пул приложений определяет максимальную память и действия, которые выполняются, если предел достигнут. Поэтому ищите свои объекты, чтобы совершать короткие действия. В общем, вам нужно проверить свой код, который вы инициализируете и выпускаете все ресурсы, которые вы используете, чтобы предотвратить постоянный рост использования памяти. – YvesR

ответ

0

В дополнение к моему комментарию выше: проверьте использование основного ресурса и в конце использования убедитесь, что вы используете .Dispose(), чтобы его освободить.

Для использования памяти перейдите в диспетчер IIS, откройте дерево и перейдите к пулам приложений. Отредактируйте дополнительные свойства из пула, используемого вашим сайтом, и проверьте/установите там настройки.

0

Я использовал профилировщик ANTS. Это поможет вам найти место, где код вызвал утечку памяти. Вы также можете создать пользовательский монитор производительности в инструменте perfmon.

Это сработало для меня. Дайте мне знать, если вам нужна дополнительная помощь.

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