我正在开发一个可可应用程序,该应用程序接收大量数据并将其存储到核心数据中(> 500K 个具有许多反向关系的对象)。该应用程序必须不断循环运行。我遇到的问题是在每个周期之后分配的内存增长 20-40 兆字节(如 xcode 所示;当然,活动监视器显示相同的趋势)。
到目前为止我所拥有的:
- 将对象插入到自动释放池的上下文中的包装方法;
- 重置上下文,undoManager nil,stalenessInterval 0;
- 在循环完成时重新创建持久存储协调器(删除-添加存储);
- 许多小时的分析,但找不到泄漏原因
如果可以改进此操作列表,我想我会很感激建议,我的主要问题是我应该如何处理系统内存,我的应用程序最终会吃光。因为有可能我将无法再优化我的代码。我不能让应用程序因内存不足而崩溃;所以我现在处理它的方式是如果应用程序的内存分配达到某个硬编码值(比如说,1 GB),我会重新启动应用程序。
我不喜欢这个解决方案,所以希望有人可以建议我以适当的方式处理这个问题。或者有经验的人处理这种情况的方式。谢谢
更新
当第一个周期完成时,从仪器和 xcode 的内存调试仪表中添加快照。