内存溢出问题

liulangdeyuyu 2010-08-17 02:07:19
public string getHtml(string url, string charSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
{

WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient

myWebClient.Credentials = CredentialCache.DefaultCredentials;

//从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
byte[] myDataBuffer = myWebClient.DownloadData(url);
string strWebData = Encoding.Default.GetString(myDataBuffer);

//获取网页字符编码描述信息
Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string webCharSet = charSetMatch.Groups[2].Value;
if (charSet == null || charSet == "")
charSet = webCharSet;

if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);

return strWebData;
}



这段代码是用来获取网页源码的,当反复调用时会报内存溢出错误,
这段代码哪个地方没有释放内存???
...全文
250 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2010-08-18
  • 打赏
  • 举报
回复
跟踪一下所下载的网页内容大小..
byxxw 2010-08-18
  • 打赏
  • 举报
回复
myWebClient.Dispose()
加上个这方法试下
liulangdeyuyu 2010-08-18
  • 打赏
  • 举报
回复

liulangdeyuyu 2010-08-17
  • 打赏
  • 举报
回复
liulangdeyuyu 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 llddyy123wq 的回复:]

给方法加个try,catch,finaly,
在finaly里调用一下Finalize()方法。
作用:在通过垃圾回收将 Component 回收之前,释放非托管资源并执行其他清理操作。
当然这样的话,你定义的WebClient对象就得放到try外面
参考资料:http://technet.microsoft.com/zh-cn/office/system.net.webclient_……
[/Quote]
Finalize()方法怎么用啊?
porschev 2010-08-17
  • 打赏
  • 举报
回复
帮顶一下。。没遇到过。。
liulangdeyuyu 2010-08-17
  • 打赏
  • 举报
回复
我试一下
llddyy123wq 2010-08-17
  • 打赏
  • 举报
回复
给方法加个try,catch,finaly,
在finaly里调用一下Finalize()方法。
作用:在通过垃圾回收将 Component 回收之前,释放非托管资源并执行其他清理操作。
当然这样的话,你定义的WebClient对象就得放到try外面
参考资料:http://technet.microsoft.com/zh-cn/office/system.net.webclient_members.aspx

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧