内存不断增长在Swift中分析大量XML文件
问题描述:
我通过枚举目录解析大量(> 1000)XML文件,然后将解析的数据插入到Yap数据库中。我试过SWXMLHash
和AEXML
。两者显示出类似的存储器使用量,如下:内存不断增长在Swift中分析大量XML文件
暴跌来枚举/插入完成时。如果我以纯字符串的形式读取XML,那么在内存消耗低于160 MB时它可以正常工作。使用仪器我相信没有内存泄漏,也不可能,因为内存最终会被回收。那么这里发生了什么?
===== 更新:
消除所有其他的可能性,我才发现,这是因为XML解析或邑数据库没有。这是因为在XML解析函数中创建了数组。
答
这是autoreleasepool引起的一个典型问题。手动使用autoreleasepool以下几种情况:
如果你正在编写一个不是基于一个UI框架,比如一个命令行工具的程序。
如果您编写一个可创建许多临时对象的循环。 您可以在循环中使用autorelease池块来在下一次迭代之前处置这些对象。在循环中使用自动释放池块有助于减少应用程序的最大内存占用量。
如果你生成一个辅助线程。
同时检查:Is it necessary to use autoreleasepool in a Swift program?