如何在Mac OS上获得最高记忆?

Ive*_*aev 6 memory delphi macos delphi-xe2

在Windows中,我可以通过调用GetProcessMemoryInfo来获取Peak Memory的使用情况

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;
Run Code Online (Sandbox Code Playgroud)

什么是Mac OS相当于这样做?

Mar*_*ell 9

你可以/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
Run Code Online (Sandbox Code Playgroud)

  • @SimonWarta 我的 Mac 上“time”的手册页说“-l”开关会导致打印“usage”结构的内容。“getrusage”的手册页将“ru_maxrss”字段描述为“使用的最大驻留集大小(以字节为单位)”。我尝试使用“dd”创建一个 1MB、一个 10MB、一个 100MB 和一个 1000MB 文件,并将整个文件放入 Perl 变量中,并测量所使用的 RAM,这对我来说与以字节为单位的 RSS 一致。 (5认同)
  • 请注意,zsh 用户将需要“time”的绝对路径,请参阅:http://unix.stackexchange.com/questions/76639/getting-zsh-command-not-found-time-when-running-time -在子shell中 (2认同)