多线程循环里内存不断增加
每循环一轮,内存使用大概增加几十k,还有那些资源没有释放?还是方法问题?请教
- Delphi(Pascal) code
while isrun^ do//isrun是一个pboolean,用来控制线程循环 begin try perl.Subject:=surl.Get(suri);//perl是正则表达控件,在前面create的,在线程destruct时候销毁了。 perl.RegEx:=srule; perl.Options:=[preCaseLess]; while perl.MatchAgain do begin tmp.Add(perl.SubExpressions[1]);//tmp是tstrings,在循环前创建,在循环结束后销毁了。现在就是怀疑乇鹗tstrings出的问题 tmp.Add(perl.SubExpressions[2]); end; except end; sLog.Add(tmp.Strings[0] + '#' + tmp.Strings[1]);//FLog消息,详见:http://blog.itpub.net/resource/4034/LogUtils.pas tmp.Clear; for i:=0 to 100 do//这里只是想快速响应主窗体发送的退出线程指令 begin Sleep(stime * 10); if not isrun^ then begin logout:=True; Break; end; end; if logout then Break; end;
[解决办法]
看不出来,难道有死循环,,,
[解决办法]
tmp := TStringList.Create;
try
...
finally
tmp.Free
end;
[解决办法]
估计这不是重点,重点在sLog.Add(tmp.Strings[0] + '#' + tmp.Strings[1]);中的Strings[0]和Strings[1]有多大
[解决办法]
[解决办法]
逐行注释,并测试,
[解决办法]
线程的东西?
用锁呀。
[解决办法]
[解决办法]
在.dpr文件里加上一句
ReportMemoryLeaksOnShutdown := True;
并把工程改为Debug模式,运行一次就知道问题是不是在这了
还有,你可以用EurekaLog来帮你检测内存泄漏问题