idhttp 写了一个类似网页爬虫 发现内存一直再增大直到崩溃 爬虫用得着用indy这么庞大的组件吗? indy有些版本是会有BUG的,这东西一直在改,但也可能是你的程序有问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用专业的 EurekaLog 测试过 无任何内存泄露 这里只是获取网页数据get 莫非是delphi bug ? 问题是时好时坏 很不稳定 我就纳闷了 实在搞不懂哪的原因 再用ics做同样的工作测试测试 我也做爬虫 delphi做的 加我吧 1791272808 刚才用 xe2 d7 分别编译了工程 测试 内存还是增加 检测代码N遍 没有 忘记free的地方 EurekaLog 也说明了这一点 莫非是 indy有问题 ? 不报不见得就没有内存泄露比如procedure TForm1.Button1Click(Sender: TObject);begin TButton.Create(self);end;这个在程序关闭时,FastMM就不会报但procedure TForm1.Button1Click(Sender: TObject);begin TButton.Create(nil);end;就会报实际上,前一种反复运行内存使用当然会上涨 控件全部是Create(nil);方式 找到原因了 因为以下代码 function THtmlThreade.HtmlToText(HtmlText: WideString): WideString;var V: OleVariant; Document: IHTMLDocument2;begin Result := HtmlText; if HtmlText = '' then exit; CoInitializeEx(nil, COINIT_MULTITHREADED); Document := CoHTMLDocument.Create as IHTMLDocument2; try V := VarArrayCreate([0, 0], varVariant); V[0] := HtmlText; Document.Write(PSafeArray(TVarData(V).VArray)); Document.Close; Result := trim(Document.body.outerText); finally Document.clear ; Document := nil; CoUninitialize; end;end; 这个函数 是html转 纯文字的 从网上copy的 我是再线程中用到了这个函数 测试发现 注释改函数 内存正常 有没有其他函数代替这个 我只知道 这段代码有问题 大牛帮我分析下 为啥这样 莫非 线程里 用 CoInitializeEx 的问题 ? 怎么解决 用WinDbg测试下就知道哪块内存泄露了,具体的可以试试umdh,它可以分析两个时间点内存变化点。设置下生成符号文件,这样崩溃的时候Windbg可以直接比对符号文件看出哪里崩溃了。 没想到现在还有这么多用delphi的朋友 IHTMLDocument2实际上是用的webbrowser,而微软的Webbrowser的内存释放不掉是公知的.建议你采用其他的Html解析器来解析你的Html. 试试Chromium,SVN:http://delphichromiumembedded.googlecode.com/svn 这个倒是完美.但是太大了.带20MB的DLL. 万分感谢 测试结果 已经回你邮箱了 text对 但是没有回车换行 <TBODY><TR><TD id=bold class=td1 width="5%" noWrap>FMT</TD><TD class=td1>BK</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>LDR</TD><TD class=td1>-----nam0 22----- 450 </TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>001</TD><TD class=td1>006755195</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>005</TD><TD class=td1>20130820162708.0</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>010</TD><TD class=td1>|a 978-7-302-31478-3 |d CNY29.00</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>100</TD><TD class=td1>|a 20130807d2013 em y0chiy50 ea</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>1010</TD><TD class=td1>|a chi</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>102</TD><TD class=td1>|a CN |b 110000</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>105</TD><TD class=td1>|a y z 000yy</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>106</TD><TD class=td1>|a r</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>2001</TD><TD class=td1>|a Delphi程序设计及应用 |b 专著 |f 刘苗苗,邢煜,张永生等编著 |9 Delphi cheng xu she ji ji ying yong</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>210</TD><TD class=td1>|a 北京 |c 清华大学出版社 |d 2013</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>215</TD><TD class=td1>|a 14,262页 |d 26cm</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>300</TD><TD class=td1>|a 计算机应用21世纪高等学校规划教材</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>330</TD><TD class=td1>|a 本书共15章,主要内容包括:Delphi程序设计基础知识、Object Pascal语言基础知识、基本组件的使用、用户界面的设计、数组、过程与函数、对话框的使用、菜单栏、工具栏、状态栏、单文档和多文档界面的设计、图形图像与多媒体技术、文件操作和数据库编程。</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>6060</TD><TD class=td1>|a 软件工具 |x 程序设计 |x 高等学校 |j 教材</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>6060</TD><TD class=td1>|a 软件工具</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>6060</TD><TD class=td1>|a 程序设计</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>6100</TD><TD class=td1>|a Delphi</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>690</TD><TD class=td1>|a TP311.561 |v 5</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>701 0</TD><TD class=td1>|a 刘苗苗 |4 编著 |9 liu miao miao</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>701 0</TD><TD class=td1>|a 邢煜 |4 编著 |9 xing yu</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>701 0</TD><TD class=td1>|a 张永生 |c (计算机软件) |4 编著 |9 zhang yong sheng</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>090</TD><TD class=td1>|a TP311.56 |b lmm</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>096</TD><TD class=td1>|a TP311.56 |b lmm</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>801 0</TD><TD class=td1>|a CN |b ZL |c 20130724</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>CAT</TD><TD class=td1>|a ZWCFWB1 |b 01 |c 20130807 |l NLC01 |h 1328</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>CAT</TD><TD class=td1>|a CRH3 |b 60 |c 20130820 |l NLC01 |h 1627</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>049</TD><TD class=td1>|a A330000ZJL |b UCS01006125313 |c 012011213183</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>OWN</TD><TD class=td1>|a ZB301</TD></TR><!-- filename: full-000-body --><TR><TD id=bold class=td1 width="5%" noWrap>SYS</TD><TD class=td1>006755195</TD></TR><!-- filename: full-set-tail --><!-- publish section 这里的数据是我要的 用你的 处理后 text 都在一行了 没法区分了 我是 每个 tr 单独处理数据<TR><TD id=bold class=td1 width="5%" noWrap>210</TD><TD class=td1>|a 北京 |c 清华大学出版社 |d 2013</TD></TR><!-- filename: full-000-body --> 经测试 现在完全没有问题了 内存不再增大 软件稳定运行 。 确实是 mshtml 的问题 感谢 武稀松 技术指导 这里不得不说 王哥的代码 一级棒。分给你了 发给我一个吧,我现在也遇到这问题了,谢谢,邮箱:[email protected] 楼主能否也发我一份?[email protected] 如何对比这样的两个字符串是否相等? 我的图片存取有错吗? 有问题绝对有问题 求delphi2005 下载地址 为什么我的frpreview不能预览? 求救:datetime的格式问题。。。。 金山词霸之剑 怎样解决相同文件名的问题。在线等待! Delphi with XML 那里有下载网络编程方面的资料,采用Delphi的网上好象比较少。 BDE Administrator提示輸入用戶名和密碼從哪來的 请教一个delphi读取oracle数据库的问题
比如
procedure TForm1.Button1Click(Sender: TObject);
begin
TButton.Create(self);
end;
这个在程序关闭时,FastMM就不会报但
procedure TForm1.Button1Click(Sender: TObject);
begin
TButton.Create(nil);
end;
就会报实际上,前一种反复运行内存使用当然会上涨
function THtmlThreade.HtmlToText(HtmlText: WideString): WideString;
var
V: OleVariant;
Document: IHTMLDocument2;
begin
Result := HtmlText; if HtmlText = '' then
exit;
CoInitializeEx(nil, COINIT_MULTITHREADED);
Document := CoHTMLDocument.Create as IHTMLDocument2;
try
V := VarArrayCreate([0, 0], varVariant);
V[0] := HtmlText;
Document.Write(PSafeArray(TVarData(V).VArray));
Document.Close;
Result := trim(Document.body.outerText);
finally Document.clear ;
Document := nil;
CoUninitialize; end;end; 这个函数 是html转 纯文字的 从网上copy的 我是再线程中用到了这个函数 测试发现 注释改函数 内存正常 有没有其他函数代替这个
设置下生成符号文件,这样崩溃的时候Windbg可以直接比对符号文件看出哪里崩溃了。
建议你采用其他的Html解析器来解析你的Html.
http://delphichromiumembedded.googlecode.com/svn
<TBODY>
<TR>
<TD id=bold class=td1 width="5%" noWrap>FMT</TD>
<TD class=td1>BK</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>LDR</TD>
<TD class=td1>-----nam0 22----- 450 </TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>001</TD>
<TD class=td1>006755195</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>005</TD>
<TD class=td1>20130820162708.0</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>010</TD>
<TD class=td1>|a 978-7-302-31478-3 |d CNY29.00</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>100</TD>
<TD class=td1>|a 20130807d2013 em y0chiy50 ea</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>1010</TD>
<TD class=td1>|a chi</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>102</TD>
<TD class=td1>|a CN |b 110000</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>105</TD>
<TD class=td1>|a y z 000yy</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>106</TD>
<TD class=td1>|a r</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>2001</TD>
<TD class=td1>|a Delphi程序设计及应用 |b 专著 |f 刘苗苗,邢煜,张永生等编著 |9 Delphi cheng xu she ji ji ying yong</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>210</TD>
<TD class=td1>|a 北京 |c 清华大学出版社 |d 2013</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>215</TD>
<TD class=td1>|a 14,262页 |d 26cm</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>300</TD>
<TD class=td1>|a 计算机应用21世纪高等学校规划教材</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>330</TD>
<TD class=td1>|a 本书共15章,主要内容包括:Delphi程序设计基础知识、Object Pascal语言基础知识、基本组件的使用、用户界面的设计、数组、过程与函数、对话框的使用、菜单栏、工具栏、状态栏、单文档和多文档界面的设计、图形图像与多媒体技术、文件操作和数据库编程。</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>6060</TD>
<TD class=td1>|a 软件工具 |x 程序设计 |x 高等学校 |j 教材</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>6060</TD>
<TD class=td1>|a 软件工具</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>6060</TD>
<TD class=td1>|a 程序设计</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>6100</TD>
<TD class=td1>|a Delphi</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>690</TD>
<TD class=td1>|a TP311.561 |v 5</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>701 0</TD>
<TD class=td1>|a 刘苗苗 |4 编著 |9 liu miao miao</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>701 0</TD>
<TD class=td1>|a 邢煜 |4 编著 |9 xing yu</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>701 0</TD>
<TD class=td1>|a 张永生 |c (计算机软件) |4 编著 |9 zhang yong sheng</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>090</TD>
<TD class=td1>|a TP311.56 |b lmm</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>096</TD>
<TD class=td1>|a TP311.56 |b lmm</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>801 0</TD>
<TD class=td1>|a CN |b ZL |c 20130724</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>CAT</TD>
<TD class=td1>|a ZWCFWB1 |b 01 |c 20130807 |l NLC01 |h 1328</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>CAT</TD>
<TD class=td1>|a CRH3 |b 60 |c 20130820 |l NLC01 |h 1627</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>049</TD>
<TD class=td1>|a A330000ZJL |b UCS01006125313 |c 012011213183</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>OWN</TD>
<TD class=td1>|a ZB301</TD></TR><!-- filename: full-000-body -->
<TR>
<TD id=bold class=td1 width="5%" noWrap>SYS</TD>
<TD class=td1>006755195</TD></TR><!-- filename: full-set-tail --><!-- publish section 这里的数据是我要的 用你的 处理后 text 都在一行了 没法区分了 我是 每个 tr 单独处理数据<TR>
<TD id=bold class=td1 width="5%" noWrap>210</TD>
<TD class=td1>|a 北京 |c 清华大学出版社 |d 2013</TD></TR><!-- filename: full-000-body -->