![]() |
Monitor Speicherverbrauch
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. |
AW: Monitor Speicherverbrauch
Versuche es mal damit (habe ich vor einiger Zeit auch hier in der Delphipraxis gefunden).
Delphi-Quellcode:
Das Ergebnis kannst Du dann in ein Memofeld oder eine Stringlist schreiben für die langfristige Beobachtung.
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; |
AW: Monitor Speicherverbrauch
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz