0

ORM在我的一个 iOS 项目中使用 db-access。我在我的项目中使用它时遇到内存问题我的应用程序场景是,我需要在我的应用程序的后台线程中以页面形式将数据从服务器下载到本地数据库。

我正在做的步骤是从服务器获取 30 条记录的页面,然后在循环中使用

firstMatchOf:@"product_uuid" withValue:productUuid  

方法。

然后,如果它没有返回,则使用以下代码块创建对象并提交

productObj = [Products new];
productObj.product_name=name;
productObj.product_uuid=productUuid;
BOOL success=[productObj commit];

有很多记录,我可以在分析器中看到 fetch 函数和 commit 函数保留了太多内存并且没有释放内存。因此,例如我下载了 40 页 30 条记录,应用程序内存使用量变为 100MB,并且随着记录的增加而增加。你能帮我解决内存管理问题吗,或者如果我做错了什么,请帮助我。

您的帮助将不胜感激。

这是仪器内存分配的快照 http://tinypic.com/view.php?pic=dvftqq&s=8#.VKVdOaaZL0g

4

1 回答 1

0

看起来从 DBAccess 出来的对象以某种方式被保留了。

在事件块中执行查询时,当前构建中存在一个已知错误,但您没有提及使用框架的这一部分,因此我们暂时不考虑它。

我已经通过电子邮件向您发送了一个 DBAccess 版本,无论如何修复了该错误,以防万一有任何相关性。

我们的自动化测试的一部分涉及查询循环然后插入,您能否将此场景与所有其他代码分开以在自动释放池中复制它?

于 2015-01-01T16:07:38.823 回答