首页 新闻 会员 周边 捐助

C#内存溢出如何处理?

0
悬赏园豆:15 [已解决问题] 解决于 2013-12-02 17:16

有一个程序,有时会运行一会就报这个,有时运行时间很长报这个错,但都报同一条语句,我没看出来这条语句有什么问题,各位帮忙分析下?

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

空明流光的主页 空明流光 | 初学一级 | 园豆:111
提问于:2013-11-30 10:30
< >
分享
最佳答案
0

此问题已经新开帖了,谢谢各位

空明流光 | 初学一级 |园豆:111 | 2013-12-02 17:15
其他回答(4)
0

这个也可能是别的地方引起来的内存想好太大

html.Replace这种效率本身都很低,估计这个实现方式需要考虑换换

收获园豆:5
2012 | 园豆:21645 (高人七级) | 2013-11-30 13:47
0

怕是递归引起的吧,检查下是不是无线递归了?可以加一个计数器。看看递归了多少次。

收获园豆:5
幻天芒 | 园豆:37207 (高人七级) | 2013-11-30 14:49

无递归,程序一般运行一到五小时的时候出现

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2013-11-30 15:17

@沧海一杰: 用下VS自带的性能监视看看~

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-12-01 22:23
0

有些时候是.net内存回收方面的问题,这种内存溢出的问题要按实际情况分析。你的程序有没有调用非托管的代码,如果调用了要注意下这块代码。

收获园豆:5
告诉 | 园豆:285 (菜鸟二级) | 2013-12-02 14:39
0

怎么解决的啊???

Kevin Gao | 园豆:207 (菜鸟二级) | 2015-01-14 15:04

C#本身WebBrownser有内存泄漏问题,再者,如果可以使用异步解决,尽量避免多线程,特别是不定数量的线程,我最终将程序改为单线程异步处理,基本上避免了类似问题。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2015-01-15 10:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册