检索 Mac 上的 RAM 信息?

2024-01-03

我需要检索系统中存在的 RAM 总量以及当前正在使用的 RAM 总量,以便我可以计算百分比。这类似于:检索 MacOS X 上的系统信息? https://stackoverflow.com/questions/8736713/retrieve-system-information-on-macos-x

然而,在这个问题中,最好的答案建议如何通过读取来获取 RAM:

/usr/bin/vm_stat

由于我的程序的性质,我发现我并不是无法从该文件中读取 - 我需要一种方法来为我提供 RAM 信息,而无需简单地打开文件并从中读取。我正在寻找与函数调用有关的东西。最好是这样的:getTotalRam() and getRamInUse().

我显然不希望它那么简单,但我一直在寻找除了从文件中读取之外的解决方案。

我正在运行 Mac OS X Snow Leopard,但最好能获得一个可以在所有当前 Mac OS X 平台(即 Lion)上运行的解决方案。

解决方案可以使用 C++、C 或 Obj-C 语言,但就我而言,C++ 是最好的解决方案,因此如果可能,请尝试使用 C++ 提供它。


获取机器的物理内存很简单sysctl:

int mib [] = { CTL_HW, HW_MEMSIZE };
int64_t value = 0;
size_t length = sizeof(value);

if(-1 == sysctl(mib, 2, &value, &length, NULL, 0))
    // An error occurred

// Physical memory is now in value

VM 统计数据只是稍微复杂一些:

mach_msg_type_number_t count = HOST_VM_INFO_COUNT;
vm_statistics_data_t vmstat;
if(KERN_SUCCESS != host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmstat, &count))
    // An error occurred

然后,您可以使用 vmstat 中的数据来获取您想要的信息:

double total = vmstat.wire_count + vmstat.active_count + vmstat.inactive_count + vmstat.free_count;
double wired = vmstat.wire_count / total;
double active = vmstat.active_count / total;
double inactive = vmstat.inactive_count / total;
double free = vmstat.free_count / total;

还有一个 64 位版本的界面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检索 Mac 上的 RAM 信息? 的相关文章

  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 当您感兴趣的任务完成时,是什么让完成处理程序执行该块?

    我一直在询问并试图了解完成处理程序是如何工作的 我用过很多 也读过很多教程 我将在这里发布我使用的代码 但我希望能够创建自己的代码 而无需使用其他人的代码作为参考 我理解这个完成处理程序 其中调用者方法 void viewDidLoad n
  • 使用 Storyboard 时获取 NSManagedObjectContext

    目标是获取当前的 NSManagedObjectContext 以便使用 Core Data 在 iOS 4 3 中 我将 UINavigationController 的委托设置为 AppDelegate 如下所示 在 AppDelega
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 实体框架不支持 x.ToString()!

    实体框架无法识别我的将路由对象转换为特定字符串的 ToString 方法 public IEnumerable
  • Rails 小数精度和小数位数

    我在 Rails 应用程序中有大约 30 个表 并且有大约 6 个表我想更改一些小数列的精度和小数位数 您如何对现有的列进行此操作 您是否需要单独进行每个新的迁移 还是可以一次性完成所有迁移 change column table name
  • Xcode:如何使用每个配置不同的多个“显示名称”值?

    在 Xcode 中 我们使用多种配置来编译多个具有不同捆绑 ID 和显示名称的不同应用程序 虽然 Identity gt Bundle Identifier 正确显示灰色的 只读值 但这与 Identity gt Display Name
  • 列表理解过滤 - “set() 陷阱”

    一种相当常见的操作是过滤一个list基于另一个list 人们很快发现 x for x in list 1 if x in list 2 对于大输入来说速度很慢 它是 O n m 恶心 我们如何加快速度 用一个set进行过滤查找 O 1 s
  • 如何将系统时间格式化为字符串?

    看来我已经没有办法转了SystemTime成字符串 我必须使用SystemTime因为我需要从返回的值std fs Metadata created 您应该使用 Chrono 来获取格式支持 从 Chrono v0 4 0 开始 这变得更加
  • Android Studio 说“局部变量是多余的”[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我收到关于许多方法的警告local variable is redundant 这是一个示例方法 public MyObject getMSLi
  • SQL:如何使存储过程中的表名动态化

    我对 SQL Server 还很陌生 希望这里有人可以帮助我 我正在使用 QL Server 2008 以下是一个按预期工作的小过程 现在我想使用相同的过程来更新多个表 因为所有这些表都具有完全相同的列名称和列格式 唯一的区别是我添加的表名
  • wxWidgets 的间距/空边框

    有什么东西可以用来在窗口边缘或 wxWidgets wxPython 组件之间添加空间吗 我想要一些东西来防止组件被窗口边框或彼此挤压 类似于 Java Swing 的 EmptyBorder 或 Insets 可以完成的操作 我知道您可以
  • 如何从 Git 远程存储库中删除已删除的文件夹?

    我从本地 Git 存储库中删除了一个文件夹 然后我提交并将更改推送到远程存储库 文件被删除 但文件夹和子文件夹仍然存在 如何从远程存储库中删除空文件夹 您可以通过调用以下命令强制 git 停止跟踪本地文件 git rm file txt w
  • 在 Silverlight 3/4 中加载 3D 对象

    是否可以在 Silverlight 3 或 Silverlight 4 应用程序中加载 3D 对象 3DS Max 对象或其他格式 除了加载对象之外 我还需要一些基本的交互 简单的旋转 放大 缩小 我认为托管 3D 引擎Balder htt
  • 如何在 PHP 中设置使用 HttpOnly cookie

    我怎样才能在我的PHP apps as HttpOnly cookies 对于 Apache 上的 PHP 自己的会话 cookie 将其添加到您的 Apache 配置中或 htaccess
  • 在 C# 中使用另一个方法中的变量

    我是 C 编程新手 非常缺乏经验 我正在创建一个带有文本框的表单 我希望我的程序在一个方法中读取该框中的数字 并在另一个方法中使用这些数字执行操作 现在的情况是这样的 public void readG TextChanged object
  • 奇怪:找不到 C# 类型或命名空间名称 - 构建成功

    当我的项目在 VS2012 IDE 中打开时 我的项目中出现了一个奇怪的错误 在我使用另一个引用项目的地方 它突然说 Type or Namespace name could not be found 我所说的 说 是指当我将鼠标悬停在它上
  • Scanf 获取数字

    我是 C 语言新手 我有一个关于 scanf 的数字问题 我需要做的是 scanf 输入仅 3 位数字 其他字符或符号应被评估为垃圾 或者也许我需要使用isdigit 但我不确定它是如何工作的 我只有这个 但我知道它不起作用 scanf d
  • jQuery 在 LinkBut​​ton 上调用 __doPostBack

    我有一个 LinkBut ton 需要单击它才能引起回发 实际的链接目标是 javascript doPostBack ctl00 c1 btnRefreshGrid 单击该链接确实会执行回发 正如代码隐藏中的断点所验证的那样 还贴java
  • 什么是textViewResourceId?

    我一直在尝试弄清楚如何使用 ArrayAdapter 类 并从文档中获取 http developer android com reference android widget ArrayAdapter html http develope
  • 如何使用 Magical Record 创建和更新对象并保存它们而不使用 contextForCurrentThread

    我刚刚读了 MagicalRecord 的作者的博客文章为什么 contextForCurrentThread 在 MagicalRecord 中不起作用 http saulmora com 2013 09 15 why contextfo
  • 将 Glade 文件中的小部件添加到 Python 中 gtk.Window 的子类中。如何?

    我使用 Glade 制作了一个界面 然后我想在 Python 中创建 gtk Window 的子类并将该文件传递给它 然后我希望能够使用在 Glade 中添加的小部件 就像使用常规代码创建它们一样 这是我非常想做的事情 class Main
  • 在调用函数时不熟悉方括号的使用

    在这中间page http hangar runway7 net javascript guide 我找到下面的代码 var plus function x y return x y var minus function x y retur
  • 检索 Mac 上的 RAM 信息?

    我需要检索系统中存在的 RAM 总量以及当前正在使用的 RAM 总量 以便我可以计算百分比 这类似于 检索 MacOS X 上的系统信息 https stackoverflow com questions 8736713 retrieve