0

ORM1 つの iOS プロジェクトでdb-access を使用しています。私のプロジェクトでそれを使用しているときにメモリの問題に直面しています。私のアプリのシナリオは、アプリのバックグラウンド スレッドでページ形式でサーバーからローカル データベースにデータをダウンロードする必要があることです。

私がやっている手順は、サーバーから 30 レコードのページを取得することです。次に、ループでレコードがデータベースに存在することを確認します。

firstMatchOf:@"product_uuid" withValue:productUuid  

方法。

その後、返されない場合は、オブジェクトを作成し、次のコードチャンクを使用してコミットします

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

多くのレコードがあり、プロファイラーでフェッチ関数とコミット関数がメモリを保持しすぎてメモリを解放していないことがわかります。たとえば、30 レコードの 40 ページをダウンロードした場合、アプリのメモリ使用量は 100MB になり、レコードの増加とともに増加しています。私のメモリ管理の問題を手伝ってくれますか、何か間違ったことをしている場合は助けてください。

あなたの助けは非常に高く評価されます。

これはインストゥルメントのメモリ割り当てのスナップショットです http://tinypic.com/view.php?pic=dvftqq&s=8#.VKVdOaaZL0g

4

1 に答える 1

0

DBAccess から出てくるオブジェクトが何らかの形で保持されているように見えます。

現在のビルドでは、イベント ブロック内でクエリを実行する際に既知のバグがありましたが、フレームワークのその部分を使用することについては言及されていないため、現時点では割愛します。

何らかの形で関連している場合に備えて、とにかくその障害を修正した DBAccess のバージョンをメールで送信しました。

自動化されたテストの一部には、クエリと挿入のループが含まれます。このシナリオを他のすべてのコードから分離して、自動リリース プール内で複製できますか?

于 2015-01-01T16:07:38.823 に答える