【问题标题】:Termination due to memory pressure and memory leak in system library由于系统库中的内存压力和内存泄漏而终止
【发布时间】:2015-04-12 16:10:02
【问题描述】:

当我使用 Instruments 运行我的应用程序时,在应用程序最终崩溃之前我会遇到以下问题:

  • 分配:总字节数不断增加,最高可达 1-2GB。甚至在检测到任何泄漏之前就可以看到这种增加。
  • 泄漏:有多个泄漏。在查看调用树时,我发现它们在系统库中:
    • 在 libsystem_malloc.dylib 中带有符号名 malloc_zone_malloc 和 malloc
    • bytes used 列显示 192 Bytes, 100%

当我在 xcode 中运行它时,我收到“因内存压力而终止”错误。

我的问题是——

由于泄漏在系统库中,向苹果提交错误报告是唯一的解决方案吗?

泄漏是崩溃的唯一原因吗?考虑到只有 192 字节被泄漏并且内存使用量甚至在泄漏之前就增加了?

【问题讨论】:

    标签: ios objective-c xcode memory-leaks instruments


    【解决方案1】:

    在对内存分配和泄漏进行故障排除时,排除系统库并仅查找您的代码几乎总是一个好主意。您不太可能在核心库中发现如此基本且容易找到的错误,并且之前没有人处理过这个问题。

    malloc 中指出的泄漏事实并不意味着什么。所有内存分配最后都会通过 mallocs。您需要先查找代码中的错误。

    【讨论】:

    • 鉴于 malloc 意味着错误可能出现在代码中的任何位置,除了注释掉代码中图形密集的部分之外,还有没有更好的起点来定位错误?
    • 你不需要注释掉东西。首先尝试在分析器中运行它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2013-12-08
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多