首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

是哪位高手占用了小弟我的内存

2012-12-17 
是谁占用了我的内存?本帖最后由 byyouxin 于 2012-11-03 16:30:26 编辑function tihuan(txt,sFlie:string)

是谁占用了我的内存?
本帖最后由 byyouxin 于 2012-11-03 16:30:26 编辑


function tihuan(txt,sFlie:string):string;//替换关键词
 .......
yuan.LoadFromFile(GetCurrentDir+'\替换内容\'+sFlie);
for i:= 0 to yuan.Count - 1 do
      begin
       Tstr.Text:=yuan[i];
       Ts.Text:=zhaowenben(Tstr.Text,'<li>(.*)\|(.*)\|(.*)</li>',1);
       Tt.Text:=zhaowenben(Tstr.Text,'<li>(.*)\|(.*)\|(.*)</li>',2);
        if pos(Tguanxi.Text,Tstr.Text) >0 then
        begin
        end
        else
        begin
          if pos(Ts.Text,txt) >0 then
          begin
            Tguanxi.Text:=Ts.Text;
          end;
          txt := tihuanwenben(txt,Ts.Text,Tt.Text);
        end;
      end;
  Result:=txt;
  yuan.Free;
  Tstr.Free;
  Ts.Free;
  Tt.Free;
  Tguanxi.Free;


function tihuanwenben(yuanwenjian,tihuanzifu,tihuanhou:string):string;
var
a:tperlregex;
begin
 a:=TPerlRegEx.Create;
 a.Subject:=yuanwenjian;
 a.RegEx:=tihuanzifu;
 a.Replacement:=tihuanhou;
 a.ReplaceAll;
 Result:=a.Subject;
 a.Free;
end;

启动3M ,tihuan('混蛋','...') 后 20M 

D2010+W7
菜鸟求解!
[最优解释]
程序执行结束后,过一会内存应该要回落正常的
对于资源释放,加上try finally有时也是很有必要的

另外,每次循环时tihuanwenben中tperlregex都会创建,虽然最后释放了
但系统不一定会立即回收占用的内存,所以再次创建时会申请新的内存空间
可以改成在调用前就创建,然后传入参数,那么就只创建一次了

[其他解释]
顶一下4楼的,
不停的创建和释放确实是这样的,尤其是反复创建的情况下从楼主的语句中虽然说是顺序没有错,万一中间出了一个小错误的话,后面 就没法执行,或直接跳出。
加上try finally 模块是非常有必要的。finally 是必须执行的块,即使你在Try里面使用的exit.finally中的语句也会执行.
对于使用的对象,如果只是数据变一下,对象处理一下数据,再返回结果,只要使用前Create,全部处理完再Free就可以了。
[其他解释]
嘎嘎找到了原因

但是 内存占用的问题还是让我头疼 - -!
[其他解释]
tperlregex是啥。。
[其他解释]
用delphi的不该不知道这个正则库啊。。。

热点排行