1

我正在创建一个 iPad 应用程序,但我看到了一些奇怪的行为。我在立方体面上加载纹理图像,每个纹理的大小为 1024x1024px。

当我在我的应用程序上工作一段时间时,我在调试时收到内存警告,并且应用程序崩溃。我工作的时间越多,运行内存警告的次数就越多,在最坏的情况下,每次都会触发内存警告。

当我关闭,然后打开 iPad 应用程序运行正常时,一切都很好并且没有错误(一段时间......)。

是否有可能,当应用程序在调试时崩溃时,它不会释放它的内存?并且在多次崩溃之后,iPad 因之前的泄漏而产生了如此多的垃圾,以至于它无法正常运行?

4

2 回答 2

1

您的解释似乎暗示了您的建议,即崩溃后,内存没有完全恢复,至少没有立即恢复。但是,可能有不同的解释,即:监督内存使用并发送内存警告的哨兵在您的应用程序崩溃后(至少不会立即)无法为您的应用程序清理其状态;所以,当你开始一个新的调试会话时,它仍然使用旧信息,比如你的应用程序正在使用多少内存,等等。

在不了解 iOS 内部结构的情况下,这很困难,但为了澄清一点,我建议安装众多免费应用程序之一,它可以为您提供设备状态和可用内存量,这样您就会知道在崩溃后有多少内存实际上是留下的。

此外,在您的观察中引入时间变量,或者在重新启动您的应用程序之前尝试启动不同的应用程序,或者启动您的应用程序然后将其终止,这也可能很有用......

于 2011-07-27T10:44:22.840 回答
0

我终于解决了这个问题;)这只是我的代码中的一个内存清理问题。

当我重新启动 iPad 时,它释放了一些内存,但过了一段时间它又被填满了,当我分配一个大的位图图像时,出现了内存警告。然后导航控制器开始释放它的视图,并且有一些错误导致内存无法正确清理并最终导致应用程序崩溃。

于 2011-10-07T07:22:23.323 回答