Objective c Cocoa core数据应用程序循环提升内存

Objective c Cocoa core数据应用程序循环提升内存,objective-c,xcode,cocoa,core-data,memory-management,Objective C,Xcode,Cocoa,Core Data,Memory Management,我正在开发一个cocoa应用程序,该应用程序接收大量数据并将其存储到核心数据中(>500K对象,具有许多反向关系)。应用程序必须不断循环运行。我遇到的问题是,在每个周期之后,分配的内存都会增加20-40兆字节(如xcode所示;当然,活动监视器也显示了同样的趋势) 到目前为止,我所拥有的: 将对象插入自动释放池中上下文的包装方法 重置上下文,撤消管理器零,stalenessInterval 0 在周期完成时重新创建持久存储协调器(删除并添加存储) 进行了数小时的分析,但未能找到泄漏原因 如果

我正在开发一个cocoa应用程序,该应用程序接收大量数据并将其存储到核心数据中(>500K对象,具有许多反向关系)。应用程序必须不断循环运行。我遇到的问题是,在每个周期之后,分配的内存都会增加20-40兆字节(如xcode所示;当然,活动监视器也显示了同样的趋势)

到目前为止,我所拥有的:

  • 将对象插入自动释放池中上下文的包装方法
  • 重置上下文,撤消管理器零,stalenessInterval 0
  • 在周期完成时重新创建持久存储协调器(删除并添加存储)
  • 进行了数小时的分析,但未能找到泄漏原因
如果这一系列操作可以改进的话,我会很感激你的建议,但我的主要问题是我应该如何处理系统内存,我的应用程序最终会消耗掉这些内存。因为这是可能的,我将无法优化我的代码了。我不能让应用程序崩溃,因为没有足够的内存;因此,我现在处理它的方法是,如果应用程序的内存分配达到某个硬编码值(比如说,1GB),我将重新启动该应用程序

我不喜欢这个解决方案,所以希望有人能给我一些适当的建议来处理这个问题。或者有经验的人处理这种情况的方式。谢谢

更新

在第一个周期结束时,从仪器和xcode的内存调试量表添加快照


信息太少,无法真正帮助您
NSManagedObjectContect
确实是内存优化类。尝试对您的上下文执行更多保存。执行保存到bg上下文并合并到主上下文。更频繁地执行保存,将减少男性使用。如果CoreDate无法获得足够的性能,请改用裸SQLite。@PetroKorienev对象插入到背景上下文中;所以主上下文并没有真正被使用。Bg上下文保存得足够频繁。尽管如此,问题仍然在于如何正确处理不断增长的记忆。我想象其他处理大量数据的应用程序如果运行很长时间也会有类似的问题,我想知道开发人员是如何处理这些问题的——这些信息真的不足以给出一个好的答案。尝试使用仪器,但使用仪器,而不是检查泄漏。如果内存使用随着时间的推移而增加,您将看到是什么类型的对象导致了这种情况,以及它们是在哪里创建的。@TomHarrington可能还不够。你认为我还应该补充什么才能得到一个好的答案?我不知道在这种情况下“可能不够”是什么意思。您可以发布一些代码来实际显示您正在做什么,或者至少更详细地描述这些步骤。同样,您可以使用工具查看分配了哪些对象以及分配了哪些代码行。