【问题标题】:What can cause "Message from debugger: Terminated due to memory issue"什么可能导致“来自调试器的消息:由于内存问题而终止”
【发布时间】:2018-09-05 00:37:04
【问题描述】:

我的应用程序有时会崩溃并且控制台显示

Message from debugger: Terminated due to memory issue

有没有其他人经历过这种情况并知道一些可能导致这种情况的原因?这是我到目前为止所尝试的。

  1. 我启用了 Zombie Objects,但它没有找到任何东西。
  2. 这只发生在我的 iPhone 上,因此我无法运行仅在模拟器上运行的其他内存管理工具(即 Guard Malloc)。
  3. 这只发生在内存不足警告之后。它不会在每次内存警告之后发生,只是在一些内存警告之后发生。当我的应用收到内存警告时,它会清除一些缓存,所以我猜测它与此有关。
  4. 在模拟器中,我模拟了内存警告,但从未发生过。
  5. 我认为它可能与弱对象有关,所以我在objc_weak_error 上添加了一个符号断点。我确实让调试器停止了这个断点一次,并修复了弱错误,但它没有修复“由于内存问题而终止”。
  6. 虽然我可能没有释放足够的内存,所以我在 Xcode 中查看了我的应用程序使用的总内存,它从未超过可用内存的 50%。
  7. 我的应用程序是 Objective-C 和 Swift 代码的混合体。这似乎来自我的应用程序中用 Objective-C 编写的区域,但我不是 100% 确定。

我很想知道是否有其他人遇到过这个问题,如果有的话,你做了什么来解决它。我已经查看了有关此问题的其他 Stack Overlow 问题,但到目前为止,他们都没有让我对这个问题有任何额外的了解。

【问题讨论】:

  • 我最初的猜测是您在某处使用了太多内存。如果是这样,启用僵尸会使情况变得更糟。我会尝试使用 Allocations 工具(或者可能是 Leaks 工具)运行 Instruments 并查看创建大型项目或许多项目的位置。

标签: ios memory


【解决方案1】:

所以我最初的观察之一是错误的。我认为我的应用程序从未超过 50% 的可用内存(以上第 6 点)。我错了。它确实占用了更多内存,并且出现此错误是因为在内存警告期间我没有释放足够的内存。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2018-07-21
    • 2018-09-28
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2018-03-12
    • 2016-08-18
    相关资源
    最近更新 更多