1

sqlite でこの動作に気付きました。カーソル オブジェクトを再利用すると、プログラムがメモリ不足の例外をスローするまで、タスク マネージャのワーキング セット メモリが増加し続けます。

クエリを実行するたびに、sqlite ファイルへの接続を開き、必要なものをクエリしてから接続を閉じるように、コードをリファクタリングしました。

後者はどういうわけかそれほどメモリを消費していないようです。一定以上増えません。

sqlite db で行うことは、テーブルに対する単純な選択 (2 つの集計を含む) だけです。

これは私たちがどうにかして制御できる行動ですか?カーソルオブジェクトを再利用したいのですが、メモリを使い果たしたくありません...

4

2 に答える 2

2

SQLiteを参照してください: PRAGMA cache_size

デフォルトでは、キャッシュ サイズはかなり大きく (~2MB)、接続ごとです。SQL ステートメントを使用して小さく設定できます。

PRAGMA cache_size=-KB

負の「-」KB 値を使用して、サイズをキロバイト単位で設定します。それ以外の場合は、使用するページ数を設定します。

また、複数の接続を使用する場合は、メモリを節約するために共有キャッシュを使用することをお勧めします: SQLITE: 共有キャッシュ

于 2013-02-26T08:11:51.787 に答える