当我让我的应用程序运行很长时间时,我注意到内存问题。我实际上得到了一个内存不足的例外。我试着弄清楚问题是什么,直到我让它再次运行并且我注意到
每次html.LoadHtml(a_few_k_of_html);
我都会在这条线路上泄漏。我怀疑HtmlAgilityPack正在泄漏。我尝试将其包装在使用和调用dispose中,但这并不存在。它不仅每次都在该行上发生,但我记得改变一些区域使用HtmlAgilityPack而不是parsing html with regex
如何处理这个内存问题而不是修改HtmlAgilityPack本身?
答案 0 :(得分:3)
我有同样的问题。处理完文档后,我将文档实例设置为null,然后设置GC.Collect()。问题解决了。
答案 1 :(得分:1)
尝试使用HtmlAgilityPack.HtmlDocument
Load()
方法使用LoadHtml()
。
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
MemoryStream ms = new MemoryStream(Encoding.Default.GetBytes(a_few_k_of_html));
doc.Load(ms);
ms.Close();// <-- Important
//Do whatever you want with HtmlDocument