2012-09-18 10 views
5

私はこれを行うにはMac OSと同等である何GetProcessMemoryInfoMac OSでどのようにピークメモリを取得できますか? Windowsので

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; 

を呼び出すことにより、ピークメモリ使用量を得ることができますか?

+1

は、ここでは、コマンドラインユーティリティを使用してこの情報を収集するために、それらの出力をキャプチャ示しPythonでサンプルスクリプトです。 Delphi/Pascalから同じアプローチを使用することもできます。 http://apple.stackexchange.com/questions/4286/is-there-a-mac-os-x-terminal-version-of-the-free-command-in-linux-systems –

+1

ちなみに、メモリ用のPOSIX API使用はOS/Xでは機能しないため、これを実行するための移植可能な方法はなく、OS/Xおよびすべての一般的なUnix/Linuxシステムで動作します。私は、OS/X専用のAPIがあると確信しており、ACEのようなC++ラッパーにはこの機能が含まれています。多分、EmbarcaderoはRTLにこれを追加するべきです。 –

+0

これは役に立つかもしれません:[CHUD tools](http://www.macupdate.com/app/mac/8506/apple-chud-tools) –

答えて

6

あなたはこのよう/usr/bin/time -l <cmd>を使用することができます。

/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

ところでいいプロフィール画像:-) –

+0

私は実際にこれはDelphiを使用してプログラムによって実行されます。 –

+0

申し訳ありませんが、あなたはこれをしたいと思うかもしれませんhttps://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/getrusage.2.html –

関連する問題