【问题标题】:How do you retrieve the amount of free physical RAM in Objective-C?如何在 Objective-C 中检索可用物理 RAM 的数量?
【发布时间】:2012-02-27 02:17:54
【问题描述】:

我说的是物理 RAM,我不希望包含虚拟内存统计信息。我在 Mac OSX Snow leopard 上,但更喜欢适用于所有 OS X 平台(即 Lion)的解决方案。我使用的是 Objective-C,但 C 中的解决方案显然也是有效的。

【问题讨论】:

  • 您是否需要此信息?
  • @bneely 我的程序监控计算机的不同方面,它需要可用物理 RAM 的总量作为系统信息的一部分。

标签: objective-c c macos unix memory


【解决方案1】:

听起来您想要报告的内容与命令行实用程序 vm_stat 显示的内容相同?如果是这样,那么可能最简单的方法就是 check out its source code,这是 Apple 作为开源提供的东西之一。

相关代码在底部;这一切都依赖于对host_statistics64 的调用,这似乎是通过mach/mach.h 定义的。对我的机器的快速搜索表明它在 iOS 中也可用(或至少已定义)。

【讨论】:

  • vm_stat 提供虚拟内存统计信息,但我只需要可用物理内存量。
  • “空闲物理内存”是一个毫无意义的术语。为什么需要它?
  • 基于例如gnu.org/software/hurd/gnumach-doc 这可能是所有马赫报告。这也正是 Activity Monitor 和 iStat Pro 返回的数字。
  • @Farhad Raging Menace 通过MenuMeters 为您完成了这项工作。该代码是 GPL,因此您可以查看它并看到它们正在使用 host_statistics,并且可用空间是从 vm_statistics 计算为 (free_count + inactive_count) * vm_page_size
  • @HotLicks 物理内存优于虚拟内存。我需要物理内存统计信息,就像活动监视器中提供的信息一样,因为我试图告知用户他们正在使用多少百分比的 RAM,而物理内存似乎更合适。由于虚拟机只是模拟内存的硬盘存储,物理 RAM 不是内存的真实表示吗?
【解决方案2】:

使用它以 unsigned long long 整数形式返回系统的物理 RAM 量(以字节为单位):

-(unsigned long long)getPhysicalMemoryValue{
    NSProcessInfo *pinfo = [NSProcessInfo processInfo];
    return [pinfo physicalMemory];
}

【讨论】:

  • 你能帮我弄清楚 OSX 使用了多少内存通过目标 c @Brandon B
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 2013-09-26
  • 2012-02-24
  • 2013-08-23
  • 1970-01-01
  • 2011-02-11
相关资源
最近更新 更多