delphi 多线程程序中内存不断上升的问题!
我这个是循环程序,为什么内存不停的上升呢?有没有好的办法??窗体代码:MyThread:=a121.Create(false);memo1.Lines.Add(intto...
我这个是循环程序,为什么内存不停的上升呢?有没有好的办法??
窗体代码:
MyThread:=a121.Create(false);
memo1.Lines.Add(inttostr(MyThread.ThreadID)) ;
MyThread.Resume;
多线程代码:
procedure a121.Execute;
var
i:integer;
HttpCli1: THttpCli;
begin
HttpCli1:= THttpCli.Create(nil);
HttpCli1.RequestVer:='1.1';
for i:=0 to 500 do
begin
C:=i;
HttpCli1.URL:='http://www.qq.com/' ;
HttpCli1.RcvdStream:=TMemoryStream.Create;
try
HttpCli1.Get;
except
end;
HttpCli1.RcvdStream.Seek(0,0);
//HttpCli1.RcvdStream.Free;
setlength(httpcode,HttpCli1.RcvdStream.size);
HttpCli1.RcvdStream.Read(httpcode[1],length(httpcode));
sleep(100);
end;
end; 展开
窗体代码:
MyThread:=a121.Create(false);
memo1.Lines.Add(inttostr(MyThread.ThreadID)) ;
MyThread.Resume;
多线程代码:
procedure a121.Execute;
var
i:integer;
HttpCli1: THttpCli;
begin
HttpCli1:= THttpCli.Create(nil);
HttpCli1.RequestVer:='1.1';
for i:=0 to 500 do
begin
C:=i;
HttpCli1.URL:='http://www.qq.com/' ;
HttpCli1.RcvdStream:=TMemoryStream.Create;
try
HttpCli1.Get;
except
end;
HttpCli1.RcvdStream.Seek(0,0);
//HttpCli1.RcvdStream.Free;
setlength(httpcode,HttpCli1.RcvdStream.size);
HttpCli1.RcvdStream.Read(httpcode[1],length(httpcode));
sleep(100);
end;
end; 展开
3个回答
展开全部
事实上,你在循环内创建了500次HttpCli1.RcvdStream:=TMemoryStream.Create;
HttpCli1:= THttpCli.Create(nil); 也需要释放。
HttpCli1:= THttpCli.Create(nil); 也需要释放。
追问
能不能彻底的释放完?我怎么感觉内存还是在上升呢?呵呵
追答
如果你在每个对象使用完之后及时释放,内存不会无故上升,HttpCli1.RcvdStream.Read(httpcode[1],length(httpcode));在工作,也是需要内存开销的。属于正常。
展开全部
HttpCli1.RcvdStream:=TMemoryStream.Create;
应该在循环前创建,循环后销毁,你这是等待50秒吗?貌似很怪异哦
应该在循环前创建,循环后销毁,你这是等待50秒吗?貌似很怪异哦
追问
我这个程序是个循环程序不能让它占用太多CPU呀!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HttpCli1:= THttpCli.Create(nil);
创建了但是没有销毁。
创建了但是没有销毁。
追问
销毁了内存还会不会上升呢?
追答
销毁了自然不会出现那样的问题。
你试试看嘛,只是把注释掉的放在循环外边。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询