我正在创建一个 iPad 应用程序,我看到了一些奇怪的行为。我在立方体面上加载纹理图像,每个纹理的大小为 1024x1024 像素。
当我在我的应用程序上工作了一段时间后,我在调试时收到了内存警告,并且应用程序崩溃了。我工作的时间越多,运行内存警告的调试 session 越多,在最坏的情况下每次都会触发内存警告。
当我关闭然后打开 iPad 应用程序时,它运行良好,一切都很好,没有错误(一段时间内......)。
是否有可能,当应用程序在调试时崩溃时,它不会释放它的内存?在多次崩溃之后,iPad 有太多以前泄漏的垃圾,以至于无法正常运行?
最佳答案
您的解释似乎完全暗示了您的建议,即崩溃后,内存不会完全恢复,至少不会立即恢复。不过,可能会有不同的解释,即:监督内存使用情况并发送内存警告的哨兵无法在您的应用程序崩溃后(至少不是立即)为您的应用程序清理其状态;因此,当您开始新的调试 session 时,它仍会使用有关您的应用程序使用了多少内存等的旧信息。
在不了解 iOS 内部结构的情况下很难做到这一点,但为了澄清一点,我建议安装许多免费应用程序之一,这些应用程序可以为您提供设备状态和可用内存量,这样您就会知道,在崩溃之后, 实际剩余多少内存。
它也可能有用,在您的观察中引入时间变量,或者在重新启动您的应用程序之前尝试启动一个不同的应用程序,或者启动您的应用程序然后终止它......
关于经过数小时调试后的 iOs 内存警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6842907/