AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Monitor Speicherverbrauch

Ein Thema von user69 · begonnen am 23. Jan 2021 · letzter Beitrag vom 9. Feb 2021
Antwort Antwort
user69

Registriert seit: 11. Dez 2004
107 Beiträge
 
#1

Monitor Speicherverbrauch

  Alt 23. Jan 2021, 10:34
Ich suche nach einer einfachen Möglichkeit den Speicherverbrauch meins Programms zu loggen. Dies soll nur während der Entwicklung sein, nicht beim Kunden.
Dabei gibt es ein paar Hürden: Multithreading und auch der Aufruf einen externen Programms, was Teilberechnungen ausführt (auch Multithreading mit weiteren Unterprogrammaufrufen). Das externe Programm kann ich im code nicht ändern, es muss aber in Speicherverbrauch berücksichtigt werden.

Ich brauch nur die Summe des der Speichernutzung. Im Windows Taskmanager kann ich es zwar teils beobachten, aber das ist mir viel zu aufwendig und am ende hab ich kein logging über lange Zeit.

Andere Memory Manager, die dies analysieren sind wohl zu kompliziert, da auch die Subprozesse in C geschrieben sind, wo ich gar nicht rankomme.

Ich stellte mir eine kleines Prog vor, was im Hintergrund läuft, nach meinen Prozess per Namen sucht und dessen Speicherverbrauch dann alle 10 sek loggt.

Habt ihr da Ideen? Am Besten Delphi source, damit ich mir das anpassen kann.
  Mit Zitat antworten Zitat
JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Monitor Speicherverbrauch

  Alt 23. Jan 2021, 18:02
Versuche es mal damit (habe ich vor einiger Zeit auch hier in der Delphipraxis gefunden).

Delphi-Quellcode:
function getMyMemoryUsageInByte : integer;
var
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;
begin
 cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
 GetMem(pmc, cb);
 pmc^.cb := cb;
 if(GetProcessMemoryInfo(GetCurrentProcess, pmc, cb))then
   result := pmc^.WorkingSetSize
 else
   result := -1;
 FreeMem(pmc);
end;
Das Ergebnis kannst Du dann in ein Memofeld oder eine Stringlist schreiben für die langfristige Beobachtung.
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
107 Beiträge
 
#3

AW: Monitor Speicherverbrauch

  Alt 9. Feb 2021, 22:54
Ja, GetProcessMemoryInfo ist wohl genau der Weg...

Nun bin ich nach einiger Internetsuche nicht ganz schlüssig, welchen Wert von pmc: PPROCESS_MEMORY_COUNTERS ich nehmen soll: pmc.WorkingSetSize oder pmc.PagefileUsage ?
Ich möchte den komplett angeforderten Speicher wissen, also RAM + Auslagerung.

Laut Internet gilt wohl folgendes:
pmc.WorkingSetSize: gibt mir wohl die Speichernutzung an. Da fehlt mir aber scheinbar alles was ausgelagert wird.
pmc.PagefileUsage: Das sollte laut Internet den komplett angeforderten Speicher zurückgeben (also inklusive Auslagerung).

Liege ich da richtig mit pmc.PagefileUsage für den komplett angeforderten Speicher?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz