【问题标题】:How I can get the peak memory on Mac OS?如何在 Mac OS 上获得峰值内存?
【发布时间】:2023-03-11 12:31:01
【问题描述】:

在 Windows 中,我可以通过调用 GetProcessMemoryInfo 来获取峰值内存使用情况

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;

Mac OS 有什么功能可以做到这一点?

【问题讨论】:

  • 这里有一个 Python 示例脚本,展示了如何使用命令行实用程序并捕获其输出以收集此信息。您可以使用 Delphi/Pascal 中的相同方法。 apple.stackexchange.com/questions/4286/…
  • 顺便说一句,用于内存使用的 POSIX API 在 OS/X 上不起作用,因此没有可移植的方法可以在 OS/X 和所有常见的 Unix/Linux 系统上运行。我确信有一个仅适用于 OS/X 的 API,并且像 ACE 这样的 C++ 包装器包含此功能。也许 Embarcadero 应该将此添加到他们的 RTL 中。
  • 这可能有用:CHUD tools

标签: macos delphi memory delphi-xe2


【解决方案1】:

你可以像这样使用/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 bytes)
         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

【讨论】:

  • 我实际上对通过 Delphi 以编程方式完成这项工作很感兴趣。
  • 请注意,zsh 用户需要time 的绝对路径,请参阅:unix.stackexchange.com/questions/76639/…
  • 你确定这是用字节而不是千字节表示的吗?见man timefreebsd.org/cgi/…
  • @SimonWarta 在我的Mac 上time 的手册页说-l 开关导致usage 结构的内容被打印。 getrusage 的手册页将 ru_maxrss 字段描述为 the maximum resident set size utilized (in bytes)。我尝试使用dd 创建一个 1MB、10MB、100MB 和 1000MB 的文件,并将整个文件放入 Perl 变量中,并测量了所使用的 RAM,这对我来说似乎与 RSS 以字节为单位一致。
猜你喜欢
  • 2012-09-17
  • 2016-01-30
  • 2011-04-06
  • 2013-07-29
  • 2018-01-27
  • 2014-12-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多