2009-08-10 4 views
1

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

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

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

Благодаря

ответ

0

Если я правильно понимаю, сам Visual Studio является ООМ и сообщает, что он не может начать процесс debugg. Является ли процесс devenv.exe большим количеством памяти? Если вы находитесь под VS 2005 на 64-разрядной ОС, вы можете try the advice from this post сделать devenv.exe использовать 4 ГБ и, возможно, облегчить вашу проблему.

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

0

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

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

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

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

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