VCL 元件如何釋放記憶體 |
尚未結案
|
dannynice
一般會員 發表:12 回覆:19 積分:6 註冊:2003-07-25 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dannynice
一般會員 發表:12 回覆:19 積分:6 註冊:2003-07-25 發送簡訊給我 |
wameng 大大您好
請問一下 MemProof 這是什麼工具那裏可以找到 還有小弟只是將收到的值加入ListBox中並沒有建立其他的物件,比如說連接資料庫重複讀資料加入ListBox,每次讀取時先清除ListBox中的資料,利用廻圈讀取每一筆記錄加入ListBox中,再關閉資料庫的連接就會出現記憶體一直上升 使用元件如下
ADOConnection->ADODataSet->DataSetProvider->ClientDataSet procedure TMainFrm.Button1Click(Sender: TObject);
begin
ListBox.Clear;
ADOConnection.Connected := True;
ADODataSet.CommandText='select * from test';
ADODataSet.open;
ClientDataSet.open;
ADODataSet.close;
ADOConnection.Connected := False;
if(ClientDataSet.RecordCount>0)then begin
ClientDataSet.First;
while not ClientDataSet.Eof do begin
ListBox.items.add(ClientDataSet.fieldvalue['Test1'] #9 ClientDataSet.fieldvalue['Test2'] #9
ClientDataSet.fieldvalue['Test3']);
ClientDataSet.Next;
end;
end;
ClientDataSet.close;
end; 資料庫中的資料大約1600筆,如果重覆按 Button1 觀察記憶體變化就會一直上昇,不知是何原因 謝謉大大
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dannynice
一般會員 發表:12 回覆:19 積分:6 註冊:2003-07-25 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
John Wong
初階會員 發表:1 回覆:35 積分:32 註冊:2004-09-18 發送簡訊給我 |
|
dannynice
一般會員 發表:12 回覆:19 積分:6 註冊:2003-07-25 發送簡訊給我 |
wameng 大大您好
不知那裏可以找到 MemProof 的help 謝謝 John Wong 大大您好
如果使用
ClientDataSet.CreateDataSet;
會出現 no fields defined cannot creat dataset 還有小弟有試過以下方式記憶體是正常的
procedure TMainFrm.Button1Click(Sender: TObject);
begin
ListBox.Clear;
ADOConnection.Connected := True;
ADODataSet.CommandText='select * from test';
ADODataSet.open;
ClientDataSet.open;
ADODataSet.close;
ADOConnection.Connected := False;
if(ClientDataSet.RecordCount>0)then begin
ClientDataSet.First;
while not ClientDataSet.Eof do begin
ClientDataSet.Next;
end;
end;
ClientDataSet.close;
end; 在廻圈中不加任何動作記憶體釋放是正常的,可是只要加了listbox.items.add('....');記憶體就不斷的上昇就算清除ListBox也一樣
可是如果不使用 ClientDataSet 元件,直接在ListBox中加入資料然後清除就可釋放記憶體,所以真不知是那裏沒有釋放掉 不知跟 DataSetProvider 元件有沒有釋放誋憶體有關係,如果有那DataSetProvider要怎麼釋放記憶體
謝謝 大大的指導
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |