Einzelnen Beitrag anzeigen

jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#1

Speicherbedarf (GetProcessMemoryInfo)

  Alt 12. Jan 2006, 16:23
Hi Leute,

habe meine Probleme mit dieser gefundenen (kaum modifizierten) Routine, die ich nur benötige um im eigenen Programm die Speicherfresser rauszufischen.

Das Hauptprogramm hat natürlich zahlreiche zusätzliche Formulare, die angezeigt werden.
Solange ich nur ein einziges Fenster (testprogramm zum checken) verwende, stimmen die Byte/kb-Zahlen. In meinem Hauptprogramm klafft der Wert um etwa Faktor 10 unter dem was der Windows-TaskManager mir ausspuckt!

Kann mir bitte jemand erklären, warum das so falsch berechnet wird? Und wie würde es richtiger lauten? Ich weiß nicht weiter

PROCESS_ALL_ACCESS ist austauschbar, aber die anderen bringen denselben Wert!



Delphi-Quellcode:
procedure TForm.Speicherbedarf(Parameter : string);
// Parameter ist der zu notierende Kommentar-String ...
var
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;
  kb : integer;
// s, s2, s3 : String; Für Listeneinträge
begin
  cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
  GetMem(pmc, cb);
  pmc^.cb := cb;
  if GetProcessMemoryInfo(OpenProcess(PROCESS_ALL_ACCESS,false,
                          GetCurrentProcessId()), pmc, cb) then begin

    kb := pmc^.WorkingSetSize div 1024;

   // hau in ne Stringliste...

end;

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat