全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1824
推到 Plurk!
推到 Facebook!

怎麼釋放QuickReport的記憶體

答題得分者是:Stallion
Edward Chen
一般會員


發表:28
回覆:21
積分:9
註冊:2004-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-16 08:31:47 IP:202.39.xxx.xxx 訂閱
開一個空的的QuickReport叫(TQuickReport2,然後在main form上做一個Button來跑迴圈,如下例:

var
Counter:Integer;
Q:TQuickReport2;
begin
For Counter:=1 to 200 do begin
Q:=TQuickReport2.Create(nil);
FreeAndNil(Q);
end;
end;

跑了200圈後停下來了,記憶體上昇了約2MB左右,也沒還回來。請問我能夠有啥努力空間來把用掉的拿回來嗎?
------
Signed by Edward Chen
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-16 11:39:30 IP:211.22.xxx.xxx 未訂閱
用 try..finally看看~
var
Counter:Integer;
Q:TQuickReport2;
begin
For Counter:=1 to 200 do
begin
Try
Q:=TQuickReport2.Create(nil);
// Do something here...
Finally
Q.Free;
End
End;
end;

//另外我很好奇,開啟200個 Report 是何用意?
Edward Chen
一般會員


發表:28
回覆:21
積分:9
註冊:2004-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-16 13:58:28 IP:202.39.xxx.xxx 訂閱
不好意思,忘了說明目地。因為現行的程式採QuickReport的設計,在持續執行一段時間後有記憶體攀昇的問題。經反覆測試暨有的Class及修正該處理及回收的Created Instance後,仍有慢性的上昇現象。後來懷疑到QuickReport物件身上。因此寫了一個簡單的測試模型。希望能找出答案。
------
Signed by Edward Chen
系統時間:2024-03-29 21:23:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!