Как я могу отладить OutOfMemoryException в ASP.NET? - PullRequest
1 голос
/ 11 августа 2009

Я читаю файл .opml и анализирую его, чтобы создать список статей для каждого RSS-канала, на который я подписан, и, таким образом, добавить его в этот файл .opml.

Иногда, когда я нажимаю кнопку воспроизведения в Visual Studio (Выполнить), я получаю сообщение об ошибке (не исключение), указывающее на исключение OutOfMemoryException. Это еще до того, как приложение сможет работать (но скомпилировано). Рассматриваемая страница (ошибка появляется в окне вывода с соответствующей страницей) - это страница RSS Reader, которая вызывает методы для анализа.

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 августа 2009

Как вы это анализируете? Вы можете исчерпать память различными способами, например, сделать это в узком цикле:

for(....)
{
  //Creates immutable strings faster than they can be garbage collected 
  nextXMLPart = nextXMLPart + " " + something;
}

Насколько большой файл? Если вы читаете весь файл в память, это будет сделано.

В любом случае, я бы начал смотреть на любые повторяющиеся циклы. И если это не сработает, запустите man и поставьте точки останова в коде. Посмотрите, где находится приложение, когда начинает увеличиваться использование памяти.

0 голосов
/ 11 августа 2009

Если я правильно понимаю, Visual Studio сама по себе является OOM и сообщает, что не может запустить процесс отладки. Процесс devenv.exe использует много памяти? Если вы работаете под VS 2005 на 64-битной ОС, вы можете попробовать совет из этого поста , чтобы devenv.exe использовал 4 ГБ и, возможно, облегчил вашу проблему.

Если это не VS, а OOM, вам нужно найти проблему. Виновным должен быть тот, кто отображается в списке задач с большим размером виртуальной машины. Сам запуск VS под отладчиком может помочь. Кроме того, иногда системные ошибки (например, исчерпание ресурсов ядра) преобразуются в ошибку OOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...