我猜这是一个非常奇怪的问题,但我从来没有真正处理内存分配,所以现在我真的很偏执使用太多或忘记解除分配的东西。我发现了非常有用的内存泄漏工具(我很自然地看到,至少到目前为止,我没有失去任何方式)以及我认为用于测量用尽量的内存的分配工具在任何给定的应用程序运行时点。但是,我不确定我应该消耗多少内存。
我认为我的iPod touch有256M,但不太确定,但我不知道系统进程占用了多少,也不知道在我开始遇到低内存之前我能安全使用多少的问题。目前我的程序占用大约4 MB,这对于它正在做的事情来说似乎相当高但我想至少其中一些是无法停止的系统进程,或者像大型图形背景这样的高维护性东西我是使用
简而言之,有人能给我一个很好的基准数据,我的应用程序应该针对任何给定时间内使用的最大内存量吗? iPhone 4和iPad的数据也不错,如果这些数字差别很大。
-Ash
答案 0 :(得分:1)
没有硬答案。有几点需要注意:
1)如果你的应用程序随着时间的推移使用越来越多的内存,它会比大多数时候正确释放内存的应用程序更快地被杀死,但会犯一些错误。不要忘记,有一个看门狗进程有一个(看似)复杂的杀死应用程序的公式,并且不同的应用程序可以在不同的内存使用级别被杀死,原因各不相同。
2)iPhone4拥有比以前的手机更多的内存但是用户多任务处理,在内存使用时去城里真的很粗鲁。在这里进行多任务处理比保持内存占用率低的每一项都重要(当你自己的应用程序在后台时,使用的内存越多,被杀死的可能性就越小)。
3)严肃对待内存警告并尽可能地倾倒一切。它会让您的应用程序运行时间更长,并再次帮助它在后台运行更长时间。
答案 1 :(得分:0)
在过去的两天里,我正在分析我最新应用的内存占用情况,我发现了一个有趣的事实:
当应用程序收到内存警告时,它会释放当前不可见的视图。这导致我的应用程序崩溃,因为我没有考虑到这一点。我原本以为它是解除分配已经自动释放的对象,但这不正确。
如果我重新启动手机,它可以在堆中处理最多8mb而不会发出任何警告。我猜在iOS4中它取决于你在后台运行的东西数量。我在iPhone4上安装了iOS 4.0.1。
iPad / iPhone 3GS拥有256mb,iPhone4拥有512mb,但并不意味着它全部可用于一个进程。我记得在iOS 3.0早期我的一个应用程序被操作系统以32mb终止。