2012-01-26 2 views
2
using (Stream reader = propertyBag.GetResponse()) 
{ 
    reader.Seek(0, SeekOrigin.Begin); 
    htmlDoc.Load(reader, true); 
} 

но htmlDoc.Load (reader, true); выбросить эту ошибку:System.OutOfMemoryException в Html Документ HtmlAgilityPack

An unhandled exception of type 'System.OutOfMemoryException' occurred in mscorlib.dll

У нас есть программа, которая работает 24 часа в сутки и проверяет некоторые html-данные. Он работает в течение нескольких часов, после чего мы получаем эту ошибку. Ошибка всегда связана с HtmlDocument из HtmlAgilityPack.

Как предотвратить это?

+0

Насколько велик html-документ? Вы удаляете объект HtmlDocument? – Foole

+1

Когда это происходит, память действительно растет до нереальных сумм, или ...? (OOM не всегда относится к нагрузке на память) –

+0

Это просто догадка, но я думаю, что у вас может быть нехватка памяти. – Domenic

ответ

3

Я бы использовал профилировщик памяти, чтобы проверить, какие объекты не расположены. Возможно, Agility Pack имеет утечку памяти или ваш код, используя его.

Один из лучших профайлеров я использовал это dotTrace, который позволяет делать два снимка в разные моменты времени, сравнить их и экранные объекты, которые не расположены.

+0

Как удалить объект HtmlDocument? И thx fot dotTrace – senzacionale

+0

Возможно, это не экземпляр 'HtmlDocument', который висит в памяти. И это не тот случай, когда вы вызываете метод Dispose(), но теряете ссылки на некоторые объекты, чтобы их можно было восстановить GC. –