3

我已经看到这篇关于以编程方式从 iphone 应用 程序中检索内存使用情况的文章-retrieve-memory-usage-on-iphone太棒了!

在我的项目中,我想免费检索可用的 VRAM,因为我的应用程序加载了许多纹理,并且我必须将这些预加载到视频 Ram 中以进行快速渲染。

但在 VM_statistics 我没有查看这些属性:vm_statistics MAN 页面

非常感谢你的帮助。

4

1 回答 1

1

正如您目前所见,获得 GL 纹理内存使用的硬数字是相当困难的。CoreAnimation 也将使用 GL 纹理内存而无需“咨询”您,包括您的进程以外的进程,这使情况变得更加复杂。

实际上,我建议您使用 Instruments 中的 VM Tracker 工具来观察 IOKit 标签下您的进程映射的 VM 页面的变化。这有点粗糙,但这是我找到的最好的方法。以我的经验,这个过程主要是猜测和检查。

您专门询问了一种确定可用 VRAM 数量的方法,但即使您可以获得该信息,它也不太可能有帮助。即使您的应用程序完全是 OpenGL 并且不使用 UIViews 或 CoreAnimation 层,其他进程,最重要的是那些比您更有特权的进程,也可以随时通过 CoreAnimation 显式或隐式消耗该内存。假设如果您的应用程序阻止那些具有更高权限的应用程序获取他们需要的纹理内存,那么您的进程将被终止也可能是安全的。

换句话说,即使您可以确定 GL 纹理内存的瞬时状态,您也可能无法指望成为该资源的唯一消费者,因此它毫无用处。

归根结底,您应该花精力设计您的应用程序,使其成为 GL 内存方面的好公民,并管理(阅读:最小化)您自己的纹理内存消耗。iOS 设备不是老式游戏机——你不是唯一运行的东西——所以你需要注意并容忍这一事实,以免你的应用程序成为每个人每隔几分钟就必须重启手机的应用程序之一。为了使用它。

于 2011-10-14T02:55:55.223 回答