【问题标题】:iOs memory warnings after hours of debugging调试数小时后的 iOs 内存警告
【发布时间】:2011-07-27 10:33:19
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios ipad memory-management didreceivememorywarning


    【解决方案1】:

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

    如果不了解 iOS 的内部结构,这很困难,但为了澄清一点,我建议安装众多免费应用程序之一,该应用程序可为您提供设备状态和可用内存量,以便在崩溃后知道,实际还剩多少内存。

    在您的观察中引入时间变量,或尝试在重新启动您的应用程序之前启动不同的应用程序,或启动您的应用程序然后将其终止...

    【讨论】:

    • 这是个好主意,我会尝试使用你提到的应用程序,当我的应用程序将再次开始崩溃时,iPad 重新重置后,现在一切都很好;)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 2015-08-16
      • 2014-12-24
      • 1970-01-01
      • 2017-09-21
      • 2013-10-04
      • 2012-03-04
      相关资源
      最近更新 更多