Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Upptäck minnesläckor
|
Kategori: System
Inlagt: 2005-12-22
Läst: 1774
Inlagt av: Staffan Berg
|
Beskrivning |
Avancerat kodexempel som tar reda på om ditt minne läcker.
|
Kod |
procedure TForm.DebugProcessStatus(s: string ); var pmc: PPROCESS_MEMORY_COUNTERS; cb: Integer; MemStat: tMemoryStatus; begin MemStat.dwLength := SizeOf(MemStat); GlobalMemoryStatus(MemStat); // Get the total and available system memory TotalMemoryLabel.Caption := 'Total system memory: ' + FormatFloat('###,###', MemStat.dwTotalPhys / 1024) + ' KByte'; FreeMemoryLabel.Caption := 'Free physical memory: ' + FormatFloat('###,###', MemStat.dwAvailPhys / 1024) + ' KByte'; // Get the used memory for the current process cb := SizeOf(TProcessMemoryCounters); GetMem(pmc, cb); pmc^.cb := cb; if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then begin NewWorkingMemory := Longint(pmc^.WorkingSetSize); ProcessMemoryLabel.Caption := 'Process-Memory: ' + FormatFloat('###,###', NewWorkingMemory / 1024) + ' KByte'; MemoryLeakLabel.Caption := 'Memory Loss: ' + FormatFloat('###,###', (NewWorkingMemory - OldWorkingMemory) / 1024) + ' KByte'; OldWorkingMemory := NewWorkingMemory; end; FreeMem(pmc); DebugStatusLabel.Caption := 'Status: ' + s; end;
|
|
|