.net 使用HtmlAgilityPack时出现内存问题?

.net 使用HtmlAgilityPack时出现内存问题?,.net,memory-leaks,html-agility-pack,.net,Memory Leaks,Html Agility Pack,当我让应用程序长时间运行时,我注意到内存问题。我实际上遇到了一个内存不足的异常。我试图弄明白问题出在哪里,但我一直不知道,直到我让它再次运行,我才注意到 每次html.LoadHtml(几个html)时,我都会在这一行中发现漏洞。我怀疑HtmlAgilityPack正在泄漏。我试着用using和call dispose来包装它,但这并不存在。它不仅每次都发生在这一行,而且我还记得我将一些区域改为使用HtmlAgilityPack而不是 除了修改HtmlAgilityPack本身,我如何处理这个内

当我让应用程序长时间运行时,我注意到内存问题。我实际上遇到了一个内存不足的异常。我试图弄明白问题出在哪里,但我一直不知道,直到我让它再次运行,我才注意到

每次
html.LoadHtml(几个html)时,我都会在这一行中发现漏洞。我怀疑HtmlAgilityPack正在泄漏。我试着用using和call dispose来包装它,但这并不存在。它不仅每次都发生在这一行,而且我还记得我将一些区域改为使用HtmlAgilityPack而不是


除了修改HtmlAgilityPack本身,我如何处理这个内存问题?

我也有同样的问题。处理完文档后,我将文档实例设置为null,然后设置为GC.Collect()。问题已解决。

尝试使用
htmlalitypack.HtmlDocument
Load()
方法,而不是使用
LoadHtml()

HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
MemoryStream ms=新的MemoryStream(Encoding.Default.GetBytes(一小部分html));
文件加载(毫秒);

Close女士();//您的代码是否保留对html.LoadHtml结果的引用?你确定你的代码不再引用它了吗?var html只具有该函数的作用域,不在其他任何地方使用。我肯定我没有在任何地方提到它。这将是我有史以来的第一次泄密,我认为这可能与HtmlAgilityPack后端有关@你能在一个简单的测试程序中重现这个吗?我会惊讶地发现Html敏捷包正在泄漏。我在一个长时间运行的程序中使用它(我的网络爬虫一次运行几天,每分钟下载数千页),但没有发现任何泄漏。@JimMischel:很有趣。我注意到,当我换上我的新电脑(8G内存,尽管我还有3gb以上的空闲空间,但仍有1.5gb的内存)并安装了VS11(测试版)时,出现了这个问题,但它似乎仍然使用.NET 3.5。也许这是运行时的问题而不是泄漏?但我仍然很惊讶,即使我强制每15分钟调用一次GC,它也会达到1.5gb。我讨厌那个男人。有些人确实遇到了你所遇到的问题,当你走到问题的尽头时,他们就像“修复了它!”而没有任何解释。我可能也有同样的错误。我不认为调用GC.Collect是个好主意+1不,这不是一个好主意(这确实是一个罕见的情况),但当面对一个dll导致的问题,这为我修复了它。在我的例子中,我想从300000个文档中删除文本,这是我痛苦的唯一方法,我已经测试过了,没有任何区别
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