内存不断增长,在Swift中解析大量XML文件

时间:2016-03-07 09:26:24

标签: ios xml swift

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

enter image description here

枚举/插入完成时会出现这种情况。如果我将XML作为普通字符串读取,它可以正常工作,内存消耗低于160 MB。使用仪器我确定没有内存泄漏,并且不可能,因为内存最终被回收。那么这里发生了什么?

===== 更新:

消除了所有其他可能性,我发现由于XML解析或Yap数据库而无法解决问题。这是因为XML解析函数中的数组创建。

1 个答案:

答案 0 :(得分:1)

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

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

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

  3. 如果你产生了一个辅助线程。

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