2012-09-18 6 views
5

In Windows kann ich die maximale Speichernutzung erhalten, indem GetProcessMemoryInfo AufrufWie kann ich den Spitzenspeicher auf Mac OS bekommen?

function TProcess.Peek: Cardinal; 
var 
    PMC: PPROCESS_MEMORY_COUNTERS; 
    PMCSize: Cardinal; 
begin 
    PMCSize := SizeOf(PROCESS_MEMORY_COUNTERS); 
    GetMem(PMC, PMCSize); 
    try 
    PMC^.cb := PMCSize; 
    if GetProcessMemoryInfo(FHandle, PMC, PMCSize) then 
     Exit(PMC^.PeakWorkingSetSize) 
    else 
     Exit(0); 
    finally 
    FreeMem(PMC); 
    end; 
end; 

Was ist der Mac OS äquivalent dies zu tun?

+1

hier ist ein Beispielskript in Python, die Kommandozeilenprogramme zeigt mit und erfassen deren Ausgang diese Informationen zu sammeln. Sie könnten den gleichen Ansatz von Delphi/Pascal verwenden. http://apple.stackexchange.com/questions/4286/is-there-a-mac-os-x-terminal-version-of-the-free-command-in-linux-systems –

+1

Übrigens die POSIX APIs für Speicher Die Verwendung funktioniert unter OS/X nicht, daher gibt es keine PORTABLE-Möglichkeit, die unter OS/X und allen gängigen Unix/Linux-Systemen funktioniert. Ich bin mir sicher, dass es eine OS/X-only-API gibt und C++ - Wrapper wie ACE diese Funktionalität enthalten. Vielleicht sollte Embarcadero das zu ihrem RTL hinzufügen. –

+0

Dies könnte nützlich sein: [CHUD Werkzeuge] (http://www.macupdate.com/app/mac/8506/apple-chud-tools) –

Antwort

6

können Sie /usr/bin/time -l <cmd> wie folgt verwenden:

/usr/bin/time -l sleep 3 
     3.00 real   0.00 user   0.00 sys 
    552960 maximum resident set size     <--- this one (in btyes) 
     0 average shared memory size 
     0 average unshared data size 
     0 average unshared stack size 
     144 page reclaims 
     0 page faults 
     0 swaps 
     0 block input operations 
     0 block output operations 
     0 messages sent 
     0 messages received 
     0 signals received 
     0 voluntary context switches 
     2 involuntary context switches 
+0

Schönes Profilbild übrigens :-) –

+0

Ich war eigentlich interessiert zu haben Dies geschieht programmatisch über Delphi. –

+0

Oh, tut mir leid, vielleicht möchten Sie dies https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/getrusage.2.html –