如何由一個應用程式監測另一個應用程式的記憶體的使用情形..? |
答題得分者是:懷舊的人
|
m0210
一般會員 發表:31 回覆:29 積分:17 註冊:2002-08-23 發送簡訊給我 |
我想由另外一個應用程式來監測另一個專案的記憶體的釋放情形,有辦法這麼做嗎?
我想這麼做有兩個目地.. 目地(1):我因被Form的釋放搞的腦袋不是很清楚
什麼Free啦,什麼CaFree啦,什麼Release啦...
矇矇懂懂的,真不確定我的做法是否正確,一切都是聽來的
所以我想確定它 比方:有一個 Test的專案,內含MainForm,Form1,Form2,當我結束專案
時,我能由另一個應用程式得知 Test的MainForm,Form1,Form2等的記憶
體已經不在了嗎?
目地(2):想確保我的專案裡的記憶體是否完成釋放乾淨
我在專案動態的建立許多元件,擔心結束應用程式時,
會有些殘缺或未注意到的記憶體釋放問題,而影響了品質
|
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
如果你有心研究,我很贊成,但你一切都是聽來的,就煩惱這些記憶體釋放問題會影響你專案的品質,這就不必了,你應該先把手冊看熟,範例多看些,也沒聽說有那些人不寫記憶體管理,專案就無法進行,記憶體的管理就先交給系統去處理,頂多就利用工作管理員等觀察。等到你都弄清楚了專案相關的知識及技術後,有多餘的力氣才作更進一步的研究會好一些,因為通常這些都會用到如 API的呼叫等,對不起,並無看扁你的意思,只是因為相關的知識及技術太多了,如果不能掌握住一些基本的目標與方向,很容易迷失的,請多保重,祝你萬事如意。
|
m0210
一般會員 發表:31 回覆:29 積分:17 註冊:2002-08-23 發送簡訊給我 |
引言: 如果你有心研究,我很贊成,但你一切都是聽來的,就煩惱這些記憶體釋放問題會影響你專案的品質,這就不必了,你應該先把手冊看熟,範例多看些,也沒聽說有那些人不寫記憶體管理,專案就無法進行,記憶體的管理就先交給系統去處理,頂多就利用工作管理員等觀察。等到你都弄清楚了專案相關的知識及技術後,有多餘的力氣才作更進一步的研究會好一些,因為通常這些都會用到如 API的呼叫等,對不起,並無看扁你的意思,只是因為相關的知識及技術太多了,如果不能掌握住一些基本的目標與方向,很容易迷失的,請多保重,祝你萬事如意。如果很事都是聽來的或眼睛看的..如無一套測試的方法,又如何掌握基本的? 我之前光發問Release與Free有什麼不同,竟然點閱率破百..或許因為大家也都是聽來的..而無方法求證,我相信大家對記憶體有沒釋放是相當重視的,而我要的是求證...^_^~ |
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
如果你認為是對的,那你就去作。 當你覺得Task Manager 仍然無法滿足這樣的需求,試看看產品發表區有人發表了一個產品 StatPlus0.0.8.zip 你可試試看。
再不然你就要參考一些系統書輯或 API 這一類的書,比較會提到這方面的知識,對你的工作可能稍有幫助。 有關記憶體的書上範例供你參考 // 記得要 uses ShellAPI procedure TFormPatternFirst.SystemInfo;
var
SL: TStringList;
MemoryStatus: TMemoryStatus;
begin
MemoryStatus.dwLength := SizeOf(MemoryStatus);
GlobalMemoryStatus(MemoryStatus); SL := TStringList.Create;
try
with MemoryStatus do begin
SL.Add('');
SL.Add('Memory Status :');
// Per-Cent of Memory in use by your system
SL.Add(IntToStr(dwMemoryLoad) '% memory in use');
// The amount of Total Physical memory allocated to your system.
SL.Add(Format('S',[FormatFloat('#,##0',dwTotalPhys)]) ' Total Physical Memory in bytes');
// The amount available of physical memory in your system.
SL.Add(Format('S',[FormatFloat('#,##0',dwAvailPhys)]) ' Available Physical Memory in bytes');
// The amount of Total Bytes allocated to your page file.
SL.Add(Format('S',[FormatFloat('#,##0',dwTotalPageFile)]) ' Total Bytes of Paging File');
// The amount of available bytes in your page file.
SL.Add(Format('S',[FormatFloat('#,##0',dwAvailPageFile)]) ' Available bytes in paging file');
// The amount of Total bytes allocated to this program
// (generally 2 gigabytes of virtual space).
SL.Add(Format('S',[FormatFloat('#,##0',dwTotalVirtual)]) ' User Bytes of Address space');
// The amount of avalable bytes that is left to your program to use.
SL.Add(Format('S',[FormatFloat('#,##0',dwAvailVirtual)]) ' Available User bytes of address space');
end;
finally
if SL.Text <> '' then ShowMessage(SL.Text);
SL.Free;
end;
end; 發表人 - 懷舊的人 於 2003/02/17 01:58:36
|
vmp
一般會員 發表:11 回覆:18 積分:5 註冊:2008-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |