检索iPhone的视频RAM使用情况

3

我看到了一篇关于如何检索iPhone应用程序内存使用的文章:programmatically-retrieve-memory-usage-on-iphone,非常好!

在我的项目中,我想检索可用的VRAM空闲情况,因为我的应用程序加载了许多纹理,我必须将它们预加载到视频内存中以获得快速渲染。

但是在VM_statistics中我没有看到这些属性:vm_statistics MAN page

非常感谢您的帮助。

1个回答

1

从目前为止,获取GL纹理内存使用的确切数字非常困难。更进一步复杂的是,CoreAnimation也会在未经“咨询”的情况下使用GL纹理内存,包括来自您以外的进程。

实际上,我建议您使用Instruments中的VM Tracker工具来监视您的进程在IOKit标签下映射的VM页面的变化。这有点粗略,但这是我找到的最好的方法。根据我的经验,这个过程很大程度上是猜测和检查。

您特别要求确定可用VRAM的数量,但即使您可以获得该信息,它也不太可能有所帮助。即使您的应用程序完全基于OpenGL,并且没有使用任何UIView或CoreAnimation层,其他进程(尤其是比您更高权限的进程)都可以随时消耗该内存,无论是显式还是隐式地通过CoreAnimation。此外,如果您的应用程序阻止那些更高权限的应用程序获取它们需要的纹理内存,则可能会导致您的进程被终止。

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

说到底,你应该花时间设计你的 app,让它在 GL 内存和资源管理方面成为一个良好的公民(即:尽量减少纹理内存的占用)。iOS 设备不是旧式游戏机 - 你不是唯一运行的程序 - 所以你需要对此保持警觉和包容,否则你的 app 将会像那些每隔几分钟就需要重启手机才能使用的应用一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接