Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPod Touch 4G、iOS 5上的最大(实际)内存使用量_Ios_Memory Management_Ios5_Ipod Touch - Fatal编程技术网

iPod Touch 4G、iOS 5上的最大(实际)内存使用量

iPod Touch 4G、iOS 5上的最大(实际)内存使用量,ios,memory-management,ios5,ipod-touch,Ios,Memory Management,Ios5,Ipod Touch,我们有一个内存密集型3D应用程序,主要针对iPad2和iPhone4S,但它也适用于iPodtouch4G和iPhone3GS。我们发现,iPodtouch4G上较小的内存占用,再加上视网膜显示器,使得该平台更容易出现内存不足错误。iOS5似乎也在一定程度上降低了可用内存 根据我们使用的平台,降低3D模型的分辨率相对容易,但我们必须在加载之前设置分辨率,因此我们无法根据O/s中的内存压力警告动态降低分辨率 我们已经根据反复试验调整了内存使用情况,但我们发现,与最近重新启动的设备相比,长时间(如数

我们有一个内存密集型3D应用程序,主要针对iPad2和iPhone4S,但它也适用于iPodtouch4G和iPhone3GS。我们发现,iPodtouch4G上较小的内存占用,再加上视网膜显示器,使得该平台更容易出现内存不足错误。iOS5似乎也在一定程度上降低了可用内存

根据我们使用的平台,降低3D模型的分辨率相对容易,但我们必须在加载之前设置分辨率,因此我们无法根据O/s中的内存压力警告动态降低分辨率

我们已经根据反复试验调整了内存使用情况,但我们发现,与最近重新启动的设备相比,长时间(如数月)未重新启动的设备的可用内存要少得多。(即使你关闭了所有正在运行的应用程序。)


我想知道其他iOS应用程序开发人员使用什么作为iPod Touch 4G应用程序的实际内存限制?

很难给出实际的数字,因为操作系统在UIKit和OpenGL中为您进行了所有外部分配。我试图将自己的配置保持在3000亿左右,其中5000亿是我的高端。我已经把它推到了90MB的高度,但是在这个级别我被抛弃了很多,所以这可能是个坏主意,除非使用所有内存的任务非常简短

如果你需要破解当前的问题,你可以先检测出有问题的设备,然后在启动时降低图形引擎的分辨率。您可以获得确切的设备信息,也可以结合处理器内核数量和RAM数量检查显示缩放(视网膜),以确定要使用的质量级别

通过使用映射文件代替将数据加载到RAM中,我成功地降低了内存使用率,如果您有任何大数据分配,您可能希望尝试一下


还要注意从UIKit泄漏的视图/控件,因为它们会消耗大量内存,并可能导致在看似随机的时间被丢弃。我有一些代码从几个视图控制器泄漏了子视图。最终,这些漏洞会吞噬我的应用程序,尽管我的应用程序的内存使用并没有直接反映问题。

在牢记所有人提出的警告的同时,我个人的一般经验法则是,在合理的天气条件下,你可以预期以下情况:

  • 512MB设备->200MB可用(iPhone 4-4S、iPad 2)
  • 256MB设备->100MB可用(iPhone 3GS、iPad、iPod Touch 3G-4G)
  • 128MB设备->50MB可用(iPhone 3G、iPod Touch 1G-2G)
如果你想严格地抵御不敏感的天气,而不想在内存使用方面做出灵活的反应,你可以将这些数字减半,甚至三分之一。但如果你不能在恶劣的环境下扔掉任何东西,就很难保证可靠。它更像是一个滑动标尺,表示您愿意放弃多少性能,以获得在该点上的可靠性


从环境可预测性的角度来看,iOS更像PC而不是专用机器,无论是好是坏,加上一个操作系统的训练警长的额外奖励。

最近我发现了这个很棒的工具,可以找到任何iOS设备的最大内存容量。我们还可以找到在哪个内存级别收到低内存警告


以下是链接:

我不确定是否有有用的答案。在我看来,这在很大程度上取决于用户在使用应用程序之前或期间在设备上做什么或使用什么。我不知道你会怎么概括。好吧,我希望我们的应用程序永远不会崩溃,我想其他在这个平台上有着丰富经验的应用程序开发人员可能已经了解到,这意味着“在iPod touch上使用的东西不要超过X meg”。但我还没有找到答案。(有一个SO问题暗示了70Meg,但我认为评论者只是回应了这个问题,没有提供任何真正的见解。)SO让我想起了这个老问题,我认为值得更新一下。事实证明,在所有情况下,解决我们记忆问题的关键是切换到使用压缩纹理。实际上没有任何缺点:它们在运行时占用的内存更少,渲染速度更快。