【问题标题】:Memory Keeps Growing Parsing a Large Number of XML Files in Swift内存不断增长在 Swift 中解析大量 XML 文件
【发布时间】:2016-03-07 09:26:23
【问题描述】:

我通过枚举目录解析大量 (>1000) XML 文件,然后将解析后的数据插入 Yap 数据库。我试过SWXMLHashAEXML。它们都表现出相似的内存使用情况,如下所示:

枚举/插入完成时会出现暴跌。如果我将 XML 读取为纯字符串,则它在内存消耗低于 160 MB 时可以正常工作。使用 Instruments 我确信没有内存泄漏,也不会有,因为内存最终被回收了。那么这里发生了什么?

===== 更新:

排除所有其他可能性后,我发现这不是因为 XML 解析或 Yap 数据库。这是因为在 XML 解析函数中创建了数组。

【问题讨论】:

    标签: ios xml swift


    【解决方案1】:

    这是一个典型的由autoreleasepool引起的问题。以下情况手动使用autoreleasepool:

    1. 如果您正在编写不基于 UI 框架的程序,例如命令行工具。

    2. 如果您编写了一个创建许多临时对象的循环。 您可以在循环内使用自动释放池块在下一次迭代之前处理这些对象。在循环中使用自动释放池块有助于减少应用程序的最大内存占用。

    3. 如果您生成辅助线程。

    同时检查:Is it necessary to use autoreleasepool in a Swift program?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 2017-11-09
      • 1970-01-01
      • 2018-07-11
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      相关资源
      最近更新 更多