【发布时间】:2018-09-05 00:37:04
【问题描述】:
我的应用程序有时会崩溃并且控制台显示
Message from debugger: Terminated due to memory issue
有没有其他人经历过这种情况并知道一些可能导致这种情况的原因?这是我到目前为止所尝试的。
- 我启用了 Zombie Objects,但它没有找到任何东西。
- 这只发生在我的 iPhone 上,因此我无法运行仅在模拟器上运行的其他内存管理工具(即 Guard Malloc)。
- 这只发生在内存不足警告之后。它不会在每次内存警告之后发生,只是在一些内存警告之后发生。当我的应用收到内存警告时,它会清除一些缓存,所以我猜测它与此有关。
- 在模拟器中,我模拟了内存警告,但从未发生过。
- 我认为它可能与弱对象有关,所以我在
objc_weak_error上添加了一个符号断点。我确实让调试器停止了这个断点一次,并修复了弱错误,但它没有修复“由于内存问题而终止”。 - 虽然我可能没有释放足够的内存,所以我在 Xcode 中查看了我的应用程序使用的总内存,它从未超过可用内存的 50%。
- 我的应用程序是 Objective-C 和 Swift 代码的混合体。这似乎来自我的应用程序中用 Objective-C 编写的区域,但我不是 100% 确定。
我很想知道是否有其他人遇到过这个问题,如果有的话,你做了什么来解决它。我已经查看了有关此问题的其他 Stack Overlow 问题,但到目前为止,他们都没有让我对这个问题有任何额外的了解。
【问题讨论】:
-
我最初的猜测是您在某处使用了太多内存。如果是这样,启用僵尸会使情况变得更糟。我会尝试使用 Allocations 工具(或者可能是 Leaks 工具)运行 Instruments 并查看创建大型项目或许多项目的位置。