我看到这篇关于从iphone应用程序中检索内存使用情况的文章 programmatically-retrieve-memory-usage-on-iphone太好了!
在我的项目中,我想要免费检索可用的VRAM,因为我的应用加载了很多纹理,我必须将这些纹理预加载到视频Ram中以便快速渲染。
但是在VM_statistics上我没有查看这些属性:vm_statistics MAN page
非常感谢你的帮助。
答案 0 :(得分:1)
正如您目前所见,获取GL纹理内存使用的难数非常困难。 CoreAnimation还会使用GL纹理内存而不“咨询”您,包括来自您以外的其他流程。
实际上,我建议您使用Instruments中的VM Tracker工具来监视您的流程在IOKit标记下映射的VM页面中的更改。这有点粗糙,但这是我发现的最佳方法。根据我的经验,这个过程主要是猜测和检查。
您专门询问了一种确定免费VRAM数量的方法,但即使您可以获得该信息,也不一定非常有用。即使您的应用程序完全是OpenGL并且不使用UIViews或CoreAnimation层,其他进程,最重要的是那些比您更有特权的进程,可以随时通过CoreAnimation显式或隐式地使用该内存。也可以安全地假设,如果您的应用程序阻止那些更具特权的应用程序获得所需的纹理内存,您的进程将被终止。
换句话说,即使您可以确定GL纹理内存的瞬时状态,您可能也不能指望成为该资源的唯一消费者,因此它非常无用。
在一天结束时,您应该花费精力设计您的应用程序,以便在GL内存和管理(阅读:最小化)您自己的纹理内存消耗方面成为一个好公民。 iOS设备不是老式的游戏机 - 你不是唯一运行的东西 - 所以你需要注意并容忍这个事实,以免你的应用程序成为每个人每隔几分钟重启手机的应用程序之一为了使用它。