有一个程序,有时会运行一会就报这个,有时运行时间很长报这个错,但都报同一条语句,我没看出来这条语句有什么问题,各位帮忙分析下?
1 public static HtmlElement FindElementByOuterHTML(string html, HtmlElement root) 2 { 3 html = html.Replace("\r\n", string.Empty).Replace("\n", string.Empty); 4 if (html == root.OuterHtml.Replace("\r\n", string.Empty).Replace("\n", string.Empty)) 5 return root;
第4行代码报错,截图如下:
报错时,html参数长度一般不超过100,而root.OuterHTML长度不超过20K
此问题已经新开帖了,谢谢各位
这个也可能是别的地方引起来的内存想好太大
html.Replace这种效率本身都很低,估计这个实现方式需要考虑换换
怕是递归引起的吧,检查下是不是无线递归了?可以加一个计数器。看看递归了多少次。
无递归,程序一般运行一到五小时的时候出现
@沧海一杰: 用下VS自带的性能监视看看~
有些时候是.net内存回收方面的问题,这种内存溢出的问题要按实际情况分析。你的程序有没有调用非托管的代码,如果调用了要注意下这块代码。
怎么解决的啊???
C#本身WebBrownser有内存泄漏问题,再者,如果可以使用异步解决,尽量避免多线程,特别是不定数量的线程,我最终将程序改为单线程异步处理,基本上避免了类似问题。