記憶體使用量為什麼會一直上升呢? |
尚未結案
|
mnsf
初階會員 發表:104 回覆:90 積分:48 註冊:2003-11-25 發送簡訊給我 |
各位大大好,我寫了一段測試程式如下: unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
Trec = record
s0:string;
s1:string;
s2:string;
s3:string;
s4:string;
s5:string;
s6:string;
s7:string;
s8:string;
s9:string;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
ary:array of Trec;
implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
button1.Enabled:=false;
for i:=5000 to 10000 do
begin
setlength(ary,i);
for j:=0 to i-1 do
begin
ary[j].s0:='0000';
ary[j].s1:='1111';
ary[j].s2:='2222';
ary[j].s3:='3333';
ary[j].s4:='4444';
ary[j].s5:='5555';
ary[j].s6:='6666';
ary[j].s7:='7777';
ary[j].s8:='8888';
ary[j].s9:='9999';
end;
end;
button1.Enabled:=true;
showmessage('ok');
end; end. 在按下Button1後,我開啟工作管理員的效能頁面,查看記憶體使用的情況,
結果記憶體不斷的上升,請問有什麼方法可以讓記憶體不會一直上升嗎?
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
mnsf 你好
記憶會一直上升,主要是如下程式碼中的SetLength(ary,i);(紅色字)一直 的擴充記憶體需求,如果可以一次就配置足够的記憶體,再跑迴圈時不會記憶體 一直上升了(綠色字)。 procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; begin button1.Enabled:=false; setlength(ary,10000); // 已知最大記憶體需求 for i:=5000 to 10000 do begin //setlength(ary,i); // for j:=0 to i-1 do begin ary[j].s0:='0000'; ary[j].s1:='1111'; ary[j].s2:='2222'; ary[j].s3:='3333'; ary[j].s4:='4444'; ary[j].s5:='5555'; ary[j].s6:='6666'; ary[j].s7:='7777'; ary[j].s8:='8888'; ary[j].s9:='9999'; end; end; button1.Enabled:=true; showmessage('ok'); end; end. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |