我的应用程序是swift(最新版本)语言,它的数据库结构有点复杂。 我首次在应用启动时转储记录,因为应用必须支持离线信息,我的应用可以拥有数百万条记录。 现在在实体中保存记录,这些实体与大约14-15个实体(一对一和一对多)有关系。 我的应用程序通过内存警告并在大约1000万条记录后被终止。我尝试进行泄漏分析,但是时间应用程序工作正常,但需要很长时间。
我尝试创建单例类的上下文管理器,并尝试在插入一大块记录时创建本地类型的变量。
目前,我正在通过更新我的实体从Web API获取50条记录并保存我的上下文。
我尝试过autoreleasepool,但没有成功。
请建议我该怎么做?
谢谢 阿斯温
答案 0 :(得分:0)
我可以建议你观看这个视频。它非常鼓舞人心,并解释了许多有关核心数据的有用信息:
https://developer.apple.com/videos/play/wwdc2013/211/
您使用 fetchBatchSize 属性吗?
https://developer.apple.com/reference/coredata/nsfetchrequest/1506558-fetchbatchsize
答案 1 :(得分:0)
如果要在循环中处理大量Core Data对象,则需要定期保存上下文,以便核心数据可以将修改后的对象转换回故障,而不是将它们保留在内存中。您需要保存的频率和时间取决于您的应用程序和您用来处理的代码,在您的问题中查看会很有帮助。您需要尝试自己在速度和内存使用之间找到平衡点。
使用分配工具,您将看到内存的去向。你没有泄漏记忆,你只是使用了太多的记忆。
答案 2 :(得分:-1)