0

我想这是一个非常奇怪的问题,但我以前从来没有真正处理过内存分配,所以现在我真的很偏执于使用太多内存或忘记释放东西。我发现了非常有用的内存泄漏工具(并且很自豪地看到,至少到目前为止,我并没有丢失任何东西)以及我假设的分配工具,用于测量多少内存已用完在应用程序运行时的任何给定点。但是,我不确定我应该使用多少内存。

我认为我的 iPod touch 中有一个不错的 256M,不太确定,但我不知道其中有多少被系统进程占用,也不知道在我开始遇到内存不足问题之前我可以安全使用多少。目前我的程序占用了大约 4 MB,这对于它正在做的事情来说似乎相当高,但我想至少其中一些是无法停止的系统进程,或者像大型图形背景这样的高维护性的东西使用。

简而言之,有人可以给我一个很好的基准数据,我的应用程序应该以在任何给定时间使用的最大内存量为目标吗?iPhone 4 和 iPad 的数据也会很好,如果它们相差很大的话。

-灰

4

2 回答 2

1

没有硬性的答案。有几点需要注意:

1)如果你的应用程序随着时间的推移使用越来越多的内存,它会比一个在大多数情况下正确释放内存但会犯一些错误的应用程序更快地被杀死。不要忘记有一个看门狗进程有一个(看似)复杂的杀死应用程序的公式,并且不同的应用程序可以在不同的内存使用级别出于不同的原因被杀死。

2) iPhone4 的内存比以前的手机多很多,但是用户多任务处理,只是去城里用内存真的很粗鲁。在这里使用多任务处理时,保持低内存占用比其他任何事情都更重要(当您自己的应用程序在后台时,它会有所帮助,使用的内存越多,被杀死的可能性就越大)。

3) 认真对待内存警告,尽可能地转储一切。它将使您的应用程序运行更长时间,并再次帮助它在后台运行更长时间。

于 2010-08-18T20:46:59.840 回答
0

在过去的 2 天里,我正在分析我最新应用程序的内存占用情况,我发现了一个有趣的事实:

当应用程序收到内存警告时,它会释放当前不可见的视图。这会导致我的应用程序崩溃,因为我没有考虑到这一点。我最初认为它正在释放已自动释放的对象,但这是不正确的。

如果我重新启动手机,它可以在堆中处理高达 8mb 的数据而不会发出任何警告。我猜在 iOS4 中,这也取决于你在后台运行了多少东西。我在 iPhone4 上有 iOS 4.0.1。

iPad/iPhone 3GS 有 256mb,iPhone4 有 512mb,但这并不意味着它们都可用于进程。我记得在早期的 iO​​S 3.0 中,我的一个应用程序在 32mb 时被操作系统终止。

于 2010-08-18T20:13:48.703 回答