【问题标题】:iOS - Terminated due to memory issueiOS - 由于内存问题而终止
【发布时间】:2017-03-26 14:06:38
【问题描述】:

我遇到了一个特定 ViewController 和内存的内存问题。当我在调试模式下启动我的应用程序时,它会以 40mb 的内存使用量启动。 (我不知道这是否已经很多 - 什么是常见的?)。然后,当我打开这个特定视图时,它会飙升到大约 120mb。问题是,当我弹出这个视图(使用 navigationController popViewController)时,内存保持在 120mb。然后,当我重新打开它时,它会飙升至 200mb(每次增加 80mb)。 与其他类似的 ViewController 一样,它也会飙升到 120mb,但是当我关闭视图时,它会回落到或多或少 40mb。

问题是这个特定的视图包含相当多的代码(大约 1000 行......),我不可能在这里发布所有内容。

我应该使用什么方法来专门定位 xCode 中的问题?

【问题讨论】:

  • 您可能正在放弃或泄漏内存。使用分配和/或泄漏工具来追踪问题。
  • 一旦你修复了漏洞并更好地理解了代码,你应该暂停并将类重构为更小的类。从长远来看,它将使您受益。 ????
  • 搜索“泄漏”。使用仪器/泄漏。使用 Xcode 内存图。寻找泄漏的常见原因,例如通知、重复计时器、存储的引用自身的闭包。

标签: ios objective-c memory-leaks


【解决方案1】:

对于任何我可能能够提供帮助的人:

按照推荐使用 xCode 中的工具。网上有一些很棒的教程。

在我的情况下,这是一个 [NSTimer] 的问题,它强烈引用了我的视图,所以它之后再也没有被释放,从而堆积了内存。确保在弹出视图时停止时间。

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多