每循环一轮,内存使用大概增加几十k,还有那些资源没有释放?还是方法问题?请教 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;
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;
解决方案 »
- 一自定义函数问题,请朋友们帮忙看看
- 用WNetAddConnection2建立映射后,如何隐藏映射盘符?
- 数据库连接问题
- 几个问题请教,对高手来说很容易的了
- 关于DBGrid的问题,谢谢
- 关于ShellComboBox,ShellTreeView,ShellListViewS,hellChangeNotifier
- Delphi用ODAC的MasterSource连数据源插数据库的问题?
- 请问怎么才能在程序中得到此程序的路径
- 关于工具栏按扭上图标的问题?
- 谁能解决????????????
- delphi 读取access数据库22186条数据用时33秒,怎么加快读取速度
- RadioGroup 里面放RadioButton 为什么拖动group的时候,RadioButton不跟着group走呢?
try
...
finally
tmp.Free
end;
try
tm:=tstringlist.create;
while .. do
begin
...
end;
finally
tmp.free;
end;是不是这个tmp要放在循环里面?但是我觉得这样要经常create和free,蛮消耗的。所以才放到循环外面了
这个循环是能退出,现在设置了大概30秒重复执行一次,每执行一次,内存又增加大概112k了。。
ReportMemoryLeaksOnShutdown := True;并把工程改为Debug模式,运行一次就知道问题是不是在这了
还有,你可以用EurekaLog来帮你检测内存泄漏问题