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

问题描述:

我通过枚举目录解析大量(> 1000)XML文件,然后将解析的数据插入到Yap数据库中。我试过SWXMLHashAEXML。两者显示出类似的存储器使用量,如下:内存不断增长在Swift中分析大量XML文件

enter image description here

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

===== 更新:

消除所有其他的可能性,我才发现,这是因为XML解析或邑数据库没有。这是因为在XML解析函数中创建了数组。

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

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

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

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

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