问题 iPhone应用程序可以使用多少内存?


任何人都可以将我链接到描述iPhone应用程序内存分配的页面。

我听说你只能使用大约20兆的沙箱,具体取决于手机的状态,但我找不到这个来源。


1549
2018-02-19 21:32


起源

从我读过的内容开始,你开始收到内存警告 3MB。但我找不到任何关于苹果的参考资料。 - Gavin Miller
那不是我的经历。在我们遇到青少年之前,我们并没有真正得到记忆警告。我们的应用程序可以在1.8到5兆的范围内运行,当我们拍照时它会激增。 - Andrew Johnson


答案:


这取决于您使用的设备。我发现使用iPhone 3G时,当你的应用程序使用的总内存超过10-14MB时,它很容易崩溃。当它达到20MB时,肯定会崩溃。

据我所知,Apple没有给出你可以使用的内存的任何硬数据。它总是在变化,所以很难确定。他们建议您依靠内存警告并适当地响应它们。

iPhone 3GS具有更高的应用程序可用内存量(我听说它大约是4倍)。虽然iPhone 3GS的内存只有iPhone 3G的两倍,但操作系统占用了大量的内存。应用程序的运行余地很少。这就是3GS允许应用程序使用更多内存的原因。

此外,操作系统已经在使用大量内存。一个例子是safari保持很多标签打开。这就是为什么许多游戏建议你重启设备,如果它崩溃了很多。

在编程时,请注意内存的增加(由于未正确释放对象)和峰值内存。这个问题更多的是关于真实世界的测试(尽可能多的设备)和良好的编程实践。

这篇文章准备了更多关于如何处理内存问题的文章:

http://akosma.com/2009/01/28/10-iphone-memory-management-tips/


12
2018-02-20 04:18



保存关于Safari的部分,这通常是正确的。 - bbum
Safari的东西只是道听途说,我自己从未测试过。你发现这不是真的吗? - nevan king
@nevanking但是在ARC(自动引用计数)的情况下,我们应该担心内存使用意味着解除分配对象吗? - ViruMax


此工具可查找任何iOS设备的最大内存容量。它还可以找到您收到低内存警告的内存级别。

链接在这里: https://github.com/Split82/iOSMemoryBudgetTest


1
2018-06-11 10:54



这是一个很棒的小项目。谢谢你的链接。 - So Over It


这取决于当前的设备状态。一些原生iPhone应用程序可以在后台运行并浪费设备资源(邮件,Safari,短信,电话......)所以,很难说你将获得多少内存......理想情况下,你的应用程序应该保持在10-12Mb的限制范围内成功克服任何内存问题。


0
2018-02-19 21:58





我相信它

  • 内存警告为20MB
  • 应用程序“崩溃”在30MB

我很确定我看到了这个 iPhone开发人员的手册:使用Eric SDK的iPhone SDK构建应用程序 (惊人的书,顺便说一句)。

也: 重复 - > iPhone和iPod中可用的最大运行时内存?


0
2018-02-19 22:08



那是不对的。没有硬数字。 - bbum
我并不是故意暗示这些是科学事实。下面的海报写道:“我发现使用iPhone 3G,当你的应用程序使用的总内存超过10-14MB时,它很容易崩溃。当它达到20MB时,它肯定会崩溃。”当你想到它时,这些是很难的数字。 - typeoneerror