【问题标题】:How to get the amount of free virtual memory on Apple / Mac?如何获取 Apple / Mac 上的可用虚拟内存量?
【发布时间】:2011-04-13 14:56:39
【问题描述】:

如何获取 Mac OSX 上的可用虚拟内存量?

我说的是总空闲虚拟内存(或:空闲地址),也是当前进程可用的最大可分配连续内存块。

(例如在 Windows 上由 GlobalMemoryStatus(免费内存)返回或可通过 GetSystemInfo / VirtualQuery(最大块)的组合进行查询)

编辑: 这是为了监视内存碎片并在区域或情况变得非常糟糕的情况下得到警报。定位(也)32 位。

【问题讨论】:

  • 可用虚拟内存/地址空间通常类似于 64 位系统中的可用硬盘驱动器空间,所有最近的安装都是如此。连续分配同样不应该成为问题。
  • 编辑帖子以告知我的意图。

标签: c++ objective-c c macos memory


【解决方案1】:

简而言之,你不能。主要是因为它不是一个有用的数字,因为它一直在变化,而且对于 64 位应用程序,如果您尝试使用许多 GB(或许多 TB)的分配,无论如何您都会死掉。

你想做什么?

【讨论】:

  • 即使没有剪干设备(不应该打折),当然也可以实现这样的东西。至于问为什么,应该是评论。
  • 没有万能的设施,如果不引入竞争条件或停止世界,实际上是不可能实施的。
  • 比赛条件无关;每次分配都会更改确切的数量,因此请找到一个近似值。听起来您可以将可用物理内存量添加到可用磁盘空间量中。无论如何,有些人的磁盘已经满了,所以你可以从这个数字中减去几百兆,以获得安全边际,并使用结果表现得非常好。
  • 我指的是“竞态条件”,因为“你不能测量它,然后在以后使用它而值很可能是错误的”。而且,不,你不能减去几百兆,并且有任何接近防弹解决方案的东西。应用程序的堆通常以令人惊讶的方式碎片化;单一的巨大优化是个坏主意。
  • @bbum:这个对象(我的意思是,无论如何)不是防弹的,如果你要使用千兆字节的 VM,它可能会向用户发出警告存在。当然,他们可能会忽略警告,或者在点击后运行另一个密集型应用程序。无论如何,这只是我对为什么它是一个“有用的数字”的想法。我同意 OP 并没有真正描述他想要完成的事情,这当然不是我的建议。
猜你喜欢
  • 2016-09-12
  • 2018-08-18
  • 2015-01-10
  • 2017-12-29
  • 2012-10-16
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 2014-01-08
相关资源
最近更新 更多